Foreverjs尝试在/ node_modules / my-module / node_modules / my-module中找到模块

时间:2016-05-31 09:05:32

标签: javascript node.js node-modules forever

我使用foreverjs来启动我的服务。我还使用 nodejs v5 nvm。在Mac上运行。

所有昨天正常工作,但今天(npm update之后)当我尝试/node_modules/my-service-one/node_modules/my-service-one时,我突然遇到npm start等错误。

项目结构是:

 .
 |-package.json
 |-services.json
 |+-node_modules
   |-forever
   |-my-service-one
   |-my-service-two

配置foreverjs(services.json):

[
  {
    "append": true,
    "uid": "my-service-one",
    "script": "index.js",
    "sourceDir": "node_modules/my-service-one"
  },
  {
    "append": true,
    "uid": "my-service-two",
    "script": "index.js",
    "sourceDir": "node_modules/my-service-two"
  }
]

我用npm start(package.json)启动它:

...
"scripts": {
  "start": "node_modules/forever/bin/forever start services.json",
}
...

但是当我尝试制作npm start时,我有一个错误:

Error: Cannot find module '/Users/my_user/project_name/node_modules/my-service-one/node_modules/my-service-one/index.js'

WTF就是这个/node_modules/my-service-one/node_modules/my-service-one?为什么? 它应该使用/node_modules/my-service-one/index.js。那为什么呢?

UPD :我已经尝试过的(没有结果):

  • rm -rf node_modules;
  • 重新启动;
  • 使用节点v4,v5,v6;
  • npm cache clean;
  • 在项目内的错误位置找到其他node_modules;
  • Google it;

这也许是个坏问题,但我真的不知道为什么会这样。感谢。

1 个答案:

答案 0 :(得分:1)

您是否尝试过从命令行永久启动此模块?

这个路径问题对我来说看起来像个错误,我认为明显的管道磁带类型修复是使用services.json中的绝对路径而不是相对路径。它看起来很糟糕,但它应该有效。

但我认为最好全局安装forever(使用-g密钥),然后使用简单的shell脚本永久启动服务(两行forever start /Users/my_user/project_name/node_modules/my-service-one/index.js) - 这种方式适合我。

此外,在启动时启动此脚本非常容易,甚至可以编写脚本来启动和停止模块即服务。

UPD:这也有助于:sourceDir: './'