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

Foreverjs tries to find module in /node_modules/my-module/node_modules/my-module

我用foreverjs to start my services. Also I use nodejs v5 with nvm。 运行 于 mac。

昨天一切正常,但今天(在npm update之后)我突然遇到/node_modules/my-service-one/node_modules/my-service-one这样的错误,当我尝试[=17] =].

项目结构为:

 .
 |-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'

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


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

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

您是否尝试过从命令行使用 forever 启动此模块?

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

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

而且在启动时启动这个脚本也很容易,甚至可以编写一个脚本来启动和停止您的模块作为服务。


更新: 这也可能有帮助:sourceDir: './'