【问题标题】:Error: EBADF, bad file descriptor when running node using nohup of forever错误:EBADF,使用 nohup 永久运行节点时文件描述符错误
【发布时间】:2013-05-12 08:01:45
【问题描述】:

我在运行一个从文件系统提供文件的小型 Web 服务器时遇到了 node.js 的问题。当使用 node server.js 启动它时,它就像一个魅力,但当它使用 nohup 或永远 node.js 启动它时,找不到文件。

【问题讨论】:

    标签: node.js nohup forever


    【解决方案1】:

    原来是问题所在文件的文件路径。使用 node 运行服务器时,工作目录与 server.js 文件相同,因此 node.js 设法找到该文件。

    当使用 nohup 启动或只是从永久启动时,工作目录似乎与 server.js 不同。

    我通过在文件名前添加全局变量 __dirname 解决了这个问题。

    【讨论】:

    • 在添加全局变量 __dirname 之后能否分享完整的命令
    • 你能分享更多信息吗?我在 Windows 中也遇到过这种情况
    • @Xin 我使用服务器代码中的 __dirname 来检索文件。永远启动服务器时不会。
    【解决方案2】:

    这对我有用:

    nohup node server.js </dev/null
    

    【讨论】:

    • 哇,我不知道为什么,但这有效。 &lt; /dev/null 禁用手动输入 nohup 命令,但这与文件路径有什么关系,我不知道。我个人使用主管而不是永远,但错误是一样的。我要补充一点,直到主管中的更新使它能够听取手动输入。
    • 这是正确答案。我遇到了同样的问题 - 直接执行 node file.js 工作正常,使用 nohup 没有工作,我得到了上面提到的 EBADF 错误。放在这里给任何可能需要它的人,这是我用来记录输出和错误的完整命令:nohup node file.js &lt;/dev/null &gt; scriptresults.log 2&gt; scripterror.log &amp;
    【解决方案3】:

    这里的另一个解决方案是使用括号在子shell 中运行命令。 (nohup node index.js)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      • 1970-01-01
      • 2016-10-17
      • 2020-03-27
      • 2014-11-23
      • 1970-01-01
      相关资源
      最近更新 更多