【问题标题】:node.js does not start via upstart (but does when manually run from command line)node.js 不会通过 upstart 启动(但从命令行手动运行时会启动)
【发布时间】:2014-07-24 23:31:52
【问题描述】:

我有一个可以从命令行成功运行的 node.js 应用程序。我想使用 Upstart 来运行它。

[ReferenceError: requirejs is not defined] 出现在我的应用程序的第一行时,我看到它是...

var requirejs = require('requirejs');

我的新贵脚本中的 exec 行看起来像

exec sudo -u pi /usr/local/bin/node /home/[my_app_dir]/myapp.js >> /var/log/myapp.log 2>&1

PATH 设置不正确?

【问题讨论】:

  • 作为一个直接无关的反应,你不想成为sudo一个node进程,node和npm已经被写成完全在非root用户空间运行
  • 给人的印象是所有新贵作业都必须使用 sudo 权限运行,然后您可以使用 -u 参数更改用户。

标签: node.js upstart


【解决方案1】:

它更有可能在错误的地方寻找解决node_modules 的问题。做一个 cd(相关目录),然后是 node myapp >> ...,它应该能够找到所有你需要的库。

【讨论】:

  • 是的,将 exec 包装在 script 块中,chdir 的正确目录似乎有效。谢谢。为了将来的知识,我可以设置任何适用的 nodejs 环境变量来解决这个问题?
  • 嗯,我不知道。 Node 只检查工作目录中的node_modules 目录,然后如果什么也没找到,则向上移动 1 个目录,并继续这样做,直到它到达根目录或被拒绝访问更高的目录。
猜你喜欢
  • 2018-04-14
  • 2019-02-19
  • 2019-01-22
  • 1970-01-01
  • 2019-05-23
  • 2019-11-05
  • 2020-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多