首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算Node.js项目中缺少的依赖项

如何计算Node.js项目中缺少的依赖项
EN

Stack Overflow用户
提问于 2015-06-04 04:08:33
回答 2查看 710关注 0票数 1

我正在尝试将我的Node.js项目部署到OpenShift,当我试图查看站点时,我得到了503。

我从研究中了解到,这表明我的with服务器项目存在问题。通过检查日志,我确定这似乎是缺少依赖关系的问题。然而,日志似乎并没有告诉我哪一个:

代码语言:javascript
复制
module.js:340
    throw err;
          ^
Error: Cannot find module '/var/lib/openshift/551c63f85973ca05430002b8/app-root/runtime/repo/server.js'

我已经验证了我的and服务器“需要”的每个包都存在于package.json文件中,并且存在于node_modules文件夹中。

代码语言:javascript
复制
{
  "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上未满足的依赖的警告,但是我在另一个项目中也有同样的警告,它不会导致严重的失败。我没有使用这个模块的代码。它就在那里因为它是模板的一部分。

代码语言:javascript
复制
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内置服务器运行良好。

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

提前谢谢。

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

因此,我在基本示例服务器中添加了一个名为server.js的文件。Openshift仍然找不到文件。同样的错误信息。/Edit

我的结论是,这个问题的基本假设是不正确的。我给出了一个答案,解释了为什么OpenShift找错了插入点。然而,我启动这个线程是为了弄清楚为什么我会得到一个缺少依赖关系的错误。即使在实现了下面的解决方案之后,我仍然得到了相同的错误消息,即缺少依赖项。

其解释是:

由于某种原因,插入点文件或它需要的任何文件的任何问题都会抛出一个错误,说明插入点文件模块丢失了。

我在一个文件中有一些变量没有为OpenShift配置,而OpenShift日志中包含的最有用的错误消息是根模块丢失了。

结论“缺少依赖”错误可能只是意味着您在整个项目的某个地方有某种逻辑错误。/Solution

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-04 15:21:29

您正在使用"scripts"属性,但在OpenShift上,您确实应该使用"main"。这是因为OpenShift使用节点监控器启动和管理Node.js应用程序。看起来,如果不提供"main",则默认为server.js

票数 2
EN

Stack Overflow用户

发布于 2015-06-04 05:13:22

我认为您从错误的目录运行node server.js命令。导航到存在server.js文件的目录,然后运行命令。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30634787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档