2015-06-04 2 views
1

Я пытаюсь развернуть мой проект Node.js в OpenShift и получить 503 при попытке просмотра сайта.Как выяснить, какая зависимость отсутствует в проекте Node.js

Я знаю из исследования, что это указывает на проблему с моим проектом веб-сервера. Проверяя журналы, я решил, что это проблема с отсутствующей зависимостью. Тем не менее, журналы не появляются, чтобы сказать мне что:

module.js:340 
    throw err; 
     ^
Error: Cannot find module '/var/lib/openshift/551c63f85973ca05430002b8/app-root/runtime/repo/server.js' 

Я проверил, что каждый пакет, который «требуется» мой веб-сервер присутствует как в файле package.json и присутствует в node_modules папка.

{ 
    "name": "NekoList", 
    "version": "0.0.0", 
    "private": true, 
    "scripts": { 
    "start": "node ./bin/www" 
    }, 
    "dependencies": { 
    "bcrypt-nodejs": "0.0.3", 
    "body-parser": "~1.12.4", 
    "cookie-parser": "~1.3.5", 
    "debug": "~2.2.0", 
    "ejs": "~2.3.1", 
    "express": "~4.12.4", 
    "mongoose": "^4.0.3", 
    "morgan": "~1.5.3", 
    "node-gyp": "^2.0.1", 
    "secure-random": "^1.1.1", 
    "serve-favicon": "~2.2.1" 
    } 
} 

При запуске npm install или npm update я не получаю никаких ошибок. Я получаю предупреждения о неудовлетворительной зависимости от debug ~2.2.0, но у меня есть это же предупреждение в другом проекте, и это не вызывает критического сбоя. У меня нет кода, который использует этот модуль. Это просто потому, что это было частью шаблона.

[email protected] node_modules/node-gyp/node_modules/mkdirp/node_modules/minimist 
npm WARN unmet dependency /var/lib/openshift/551c63f85973ca05430002b8/app-root/runtime/repo/node_modules/express/node_modules/finalhandler requires [email protected]'~2.2.0' but will load 
npm WARN unmet dependency undefined, 
npm WARN unmet dependency which is version undefined 

Кроме того, проект отлично работает в моей локальной среде разработки с использованием встроенного сервера Webstorm.

Я ищу, чтобы узнать, что я могу сделать, чтобы исправить, или, по крайней мере, пролить свет на корень проблемы.

Заранее спасибо.

[Edit] Итак, основываясь на том, что говорит Саба Хасан, похоже, узел пытается запустить nonexistant файл server.js, вместо точки входа, что я определил, bin/www

Итак, я добавил файл с именем server.js с базовым примером сервера. Openshift все еще не может найти файл. Такое же сообщение об ошибке. [/ Edit]

[Решение] Я пришел к выводу, что основное предположение по этому вопросу неверно. Я одобрил ответ, объясняющий, почему OpenShift ищет не туда место для точки вставки. Однако я начал этот поток, чтобы выяснить, почему я получаю недостающую ошибку зависимостей. Даже после реализации решения, приведенного ниже, я все еще получаю то же сообщение об ошибке, о том, что отсутствует зависимость.

Объяснение заключается в следующем:

По какой-то причине, любая проблема с точкой вставки файла или любого файла, который он требует отбросит назад ошибку о том, что модуль точка вставки файла отсутствует.

У меня была переменная в одном файле, которая не была настроена правильно для OpenShift, и наиболее полезным сообщением об ошибке, содержащимся в журналах OpenShift, было то, что отсутствовал корневой модуль.

Заключение Ошибки «отсутствия зависимости» могут означать, что у вас есть какая-то логическая ошибка, где-то во всем вашем проекте. [/ Solution]

+0

Это действительно дубликат вашего другого вопроса http://stackoverflow.com/questions/30637181/openshift-with-nodejs-isnt-respecting-the -path-to-my-server-file-in-package-jso –

+0

Прочтите более внимательно. Я обратился к этой проблеме –

ответ

2

Вы используете объект "scripts", но на OpenShift вы действительно должны использовать "main". Это связано с тем, что OpenShift использует node-supervisor для запуска и управления вашим приложением Node.js. Похоже, если вы не поставили "main" по умолчанию server.js

4

Я думаю, вы используете команду node server.js из неправильной директории. Перейдите в каталог, в котором существует файл server.js, а затем запустите команду.

+0

У меня нет файла с именем server.js –

+0

Это выполняется в Openshift. Я не управляю узлом. Это происходит автоматически, когда я нажимаю новую версию проекта. Файл package.json находится в каталоге корневого репозитория, а точка ввода «./bin/www» находится в нужном месте. –

+0

Тогда, кажется, ваш путь к этому модулю установлен неправильно. –

Смежные вопросы