我使用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
; npm cache clean
; node_modules
; 这也许是个坏问题,但我真的不知道为什么会这样。感谢。
答案 0 :(得分:1)
您是否尝试过从命令行永久启动此模块?
这个路径问题对我来说看起来像个错误,我认为明显的管道磁带类型修复是使用services.json
中的绝对路径而不是相对路径。它看起来很糟糕,但它应该有效。
但我认为最好全局安装forever
(使用-g
密钥),然后使用简单的shell脚本永久启动服务(两行forever start /Users/my_user/project_name/node_modules/my-service-one/index.js
) - 这种方式适合我。
此外,在启动时启动此脚本非常容易,甚至可以编写脚本来启动和停止模块即服务。
UPD:这也有助于:sourceDir: './'