如何找出Node.js项目中缺less什么依赖项

我正在尝试将Node.js项目部署到OpenShift,并在尝试查看该站点时获得503。

我从研究中知道这表明我的web服务器项目存在问题。 通过检查日志,我确定这似乎是一个缺less依赖的问题。 但是,日志似乎并没有告诉我哪一个:

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

我已经validation过,每个由我的web服务器“需要”的软件包都存在于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 installnpm update我没有得到任何错误。 我得到了有关debug〜2.2.0的未满足依赖的警告,但是我在另一个项目中也出现了相同的警告,并且不会导致严重故障。 我没有使用这个模块的代码。 它只是在那里,因为它是模板的一部分。

 minimist@0.0.8 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 debug@'~2.2.0' but will load npm WARN unmet dependency undefined, npm WARN unmet dependency which is version undefined 

此外,该项目使用Webstorm内置服务器在我的本地开发环境中运行良好。

我想知道我可以做些什么来解决问题,或者至less弄清楚问题的根源。

提前致谢。

因此,根据Saba Hassan的说法,它看起来像节点试图运行不存在的文件server.js ,而不是我定义的入口点bin/www

所以,我添加了一个名为server.js的文件与基本的示例服务器。 Openshift仍然无法find该文件。 相同的错误讯息。 [/编辑]

[解决scheme]我已经得出结论,这个问题的基本假设是不正确的。 我赞同一个答案,解释了为什么OpenShift在插入点看错了地方。 但是,我开始这个线程找出为什么我得到一个失踪的依赖性错误。 即使在执行下面的解决scheme后,我仍然得到相同的错误消息,关于丢失依赖。

解释是这样的:

出于某种原因,插入点文件或它需要的任何文件的任何问题将返回一个错误,指出插入点文件模块丢失。

我在一个文件中有一些variables没有为OpenShiftconfiguration,而OpenShift日志中包含的最有用的错误信息是根模块丢失。

结论“缺less依赖性”错误可能意味着您在整个项目中的某处出现了某种逻辑错误。 [/解]

你正在使用"scripts"属性,但在OpenShift你真的应该使用"main"代替。 这是因为OpenShift使用node-supervisor来启动和pipe理你的Node.js应用程序。 看起来如果你不提供一个"main"它默认server.js

我想你是从错误的目录运行node server.js命令。 浏览到server.js文件所在的目录,然后运行该命令。