【发布时间】:2013-05-12 08:01:45
【问题描述】:
我在运行一个从文件系统提供文件的小型 Web 服务器时遇到了 node.js 的问题。当使用 node server.js 启动它时,它就像一个魅力,但当它使用 nohup 或永远 node.js 启动它时,找不到文件。
【问题讨论】:
我在运行一个从文件系统提供文件的小型 Web 服务器时遇到了 node.js 的问题。当使用 node server.js 启动它时,它就像一个魅力,但当它使用 nohup 或永远 node.js 启动它时,找不到文件。
【问题讨论】:
原来是问题所在文件的文件路径。使用 node 运行服务器时,工作目录与 server.js 文件相同,因此 node.js 设法找到该文件。
当使用 nohup 启动或只是从永久启动时,工作目录似乎与 server.js 不同。
我通过在文件名前添加全局变量 __dirname 解决了这个问题。
【讨论】:
这对我有用:
nohup node server.js </dev/null
【讨论】:
< /dev/null 禁用手动输入 nohup 命令,但这与文件路径有什么关系,我不知道。我个人使用主管而不是永远,但错误是一样的。我要补充一点,直到主管中的更新使它能够听取手动输入。
node file.js 工作正常,使用 nohup 没有工作,我得到了上面提到的 EBADF 错误。放在这里给任何可能需要它的人,这是我用来记录输出和错误的完整命令:nohup node file.js </dev/null > scriptresults.log 2> scripterror.log &
这里的另一个解决方案是使用括号在子shell 中运行命令。 (nohup node index.js)
【讨论】: