我有一个由 systemctl 管理的 NodeJS 程序。直到最近,这一直有效,但我最近升级了系统(Ubuntu 16.04.3 LTS),我不确定为什么调用 child_process.fork 会为通过 nvm 安装的节点版本抛出 ENOENT。
我的设置:
- Ubuntu 16.04.3 LTS
- 使用 nvm 安装的 NodeJS,在非特权帐户下
nodebb
- 我的 systemctl 服务
- 该平台
- 在此调用中引发错误的插件
这是导致我的进程崩溃的确切错误:
29/10 16:53:17 [9891] - error: Error: spawn /usr/share/nginx/nodebb/.nvm/versions/node/v4.8.5/bin/node ENOENT
at exports._errnoException (util.js:907:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:189:32)
at onErrorNT (internal/child_process.js:363:16)
at nextTickCallbackWith2Args (node.js:511:9)
at process._tickCallback (node.js:425:17)
并且二进制文件确实在那个位置,并且权限是正确的(nodebb
用户可以访问父文件夹):
nodebb@server:~$ /usr/share/nginx/nodebb/.nvm/versions/node/v4.8.5/bin/node -v
v4.8.5