我遇到了一个问题,使用node.js运行一个小型Web服务器从文件系统中提供文件。如果使用node server.js
启动它时,它能正常工作,但如果使用nohup或forever启动,则无法找到文件。
nohup node server.js </dev/null
这里的另一个解决方案是使用括号在子shell中运行命令。 (nohup node index.js)
问题出在文件路径上。当使用node运行服务器时,工作目录与server.js文件相同,因此node.js可以找到该文件。
但是,当使用nohup启动或只是使用forever启动时,工作目录似乎与server.js不同。
我通过在文件名前加上全局变量__dirname
来解决这个问题。
我来到这里是为了解决一个问题,这个问题在Windows上时不时出现,当有一些nodejs
和python
脚本相互调用时。
解决方案是在从Python代码调用node
或npm
之前取消设置NODE_CHANNEL_FD
环境变量。
< /dev/null
禁用了 nohup 命令的手动输入,但这与文件路径有何关系,我不知道。我个人使用的是 supervisor 而不是 forever,但错误是相同的。我要补充一点的是,在 supervisor 更新后,它开始监听手动输入,因此需要这个方法。 - Louis Amelinenode file.js
没有问题,但使用nohup
执行时却出现了上面提到的 EBADF 错误。为了方便其他人,我在这里放出完整的命令,同时记录输出和错误:nohup node file.js </dev/null > scriptresults.log 2> scripterror.log &
- Lior Gross