Не удается запустить определенную версию node на openshift
Я следую шагам, описанным вэтом репозитории, но я не могу заставить его работать. Когда я заглядываю в свойenv файл, версия nodejs остается .6.20
Мой файл версии JS узла является файлом по умолчанию, поэтому версия узла .8.9 должен быть запущен. Есть идеи, почему это происходит?
Мой файл маркера:
0.8.9
Вывод отладки при попытке запуска приложения
==> nodejs/logs/node.log <==
npm ERR! node -v v0.6.20
npm ERR! npm -v 1.1.37
npm ERR! code ELIFECYCLE
npm ERR! message application-name@0.0.1 start: `node server.js`
npm ERR! message `sh "-c" "node server.js"` failed with 1
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /var/lib/openshift/51ba8386e0b8cd2873000002/app-root/runtime/repo/npm- debug.log
npm ERR! not ok code undefined
npm ERR! not ok code 1
Просто для полноты картины. Мой пакет.формат JSON файл
{
"name": "application-name",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "3.2.5",
"mustache": "*",
"request" : "*",
"buildify":"*",
"cheerio" : "*",
"slugs" : "*",
"to-markdown":"*",
"consolidate":"*"
}
}
4 ответа:
Мне больше нравится эта версия стартового кода nodejs: https://github.com/ryanj/nodejs-custom-version-openshift
Он содержит более новую версию
.openshift
приложения build hooks для nodejs. Он будет читать файл маркера, но также имеет поддержку чтения непосредственно из атрибутаpackage.json
вашего файлаengines
для компиляции среды выполнения Nodejs."engines": { "node": ">= 0.10.0", "npm": ">= 1.0.0" },
Я надеюсь получить это объединенное в как содержимое папки по умолчанию
.openshift
для всех приложений nodejs на OpenShift.Вы также захотите убедиться, что вы привязаны к новый переменные окружения:
OPENSHIFT_NODEJS_IP
иOPENSHIFT_NODEJS_PORT
. Они были недавно переименованы.Обычно я добавляю что-то вроде этого в свой код приложения, позволяя ему работать в любом месте:
var ip_addr = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1'; var port = process.env.OPENSHIFT_NODEJS_PORT || '8080';
OpenShift в настоящее время показывает Вам выходные данные из
npm start
, которые могут не показывать все выходные данные вашего приложения. Для получения дополнительной информации об отладке можно попробовать запустить приложение вручную:
- сначала остановите приложение из командной строки:
rhc app stop APP_NAME
- затем подключитесь к своему приложению gear / container
rhc ssh APP_NAME
cd $OPENSHIFT_REPO_DIR
- и вручную выполните любую команду, определенную в атрибуте
scripts.start
вашего файлаpackage.json
.Надеюсь, это даст вам немного больше видимости того, что происходит.
Вы видели что-нибудь подобное в вашем "git push" выходе?
remote: - Checking to see if Node.js version 0.8.9 is installed ... remote: - Downloading and extracting http://nodejs.org/dist/v0.8.9/node-v0.8.9-linux-x64.tar.gz ... remote: % Total % Received % Xferd Average Speed Time Time Time Current remote: Dload Upload Total Spent Left Speed remote: 100 4578k 100 4578k 0 0 31.4M 0 --:--:-- --:--:-- --:--:-- 33.8M
И ближе к нижней части дна, что-то вроде:
remote: - Using Node.js version 0.8.9, checking app URI ... remote: - test URI = http://mynode-sannam.rhcloud.com/env remote: - Version from test URI = remote: remote: - Checking to see if Node.js version 0.8.9 is installed ...
Я попробовал те же инструкции, и это, кажется, сработало. Проверьте мой env здесь: http://mynode-sannam.rhcloud.com/env
Пожалуйста, повторите ваши шаги еще раз.
У меня была та же проблема, и в начале я не смог решить ее, используя исходный код из https://github.com/ryanj/nodejs-custom-version-openshift , но читая вывод push, я заметил некоторые проблемы с разрешением. Поэтому для других людей, которые имеют ту же проблему, просто войдите в:
cd .openshift\action_hooks
И выполните следующую команду:
git update-index --chmod=+x *
Он дает разрешения на выполнение команд, обновляющих версию узла