PM2 没有安装最新版本的 nodejs

PM2 not taking the latest version of nodejs installed

之前,我的 ec2 服务器上安装了节点版本 v0.10.46。对于最近的项目,我决定尝试使用 pm2 并使用安装 pm2 npm install pm2 -g.

但是,pm2 start index.js 出错了,因为该项目使用了一些带有箭头函数和 let 关键字的 ES6 语法。

因此,我使用 nvm 将节点版本更新到最新的 v6.9.1,这也是我们在本地开发时使用的相同版本 (windows)。

然而,pm2 start index.js 又报错了同样的错误:

pm2 show index提示nodejs版本还没有更新。我把旧的nodejs版本去掉,重新安装pm2,还是不行。

我也尝试过其他方法,使用:

pm2 start index.js --interpreter=~/.nvm/versions/node/v6.9.1/bin/node

强制 pm2 使用最新安装的节点版本。每次尝试都给了我相同版本的 nodejs 相同的错误。为什么 Pm2 不采用最新版本的节点并坚持使用 0.10.46?

如果有帮助:

which node
~/.nvm/versions/node/v6.9.1/bin/node
which pm2
~/.nvm/versions/node/v6.9.1/bin/pm2

此外,v0.10.46 不是使用 nvm 安装的。

编辑: 这是 运行 pm2 守护进程,使用 ps -ef | grep pm2:

请注意,ec2-user 是已登录的用户,我也对 root 用户进行了同样的尝试。我也以 root 用户身份安装了 nvm 运行 node v6.9.1 和 pm2,但都没有成功。我得到同样的错误。

NVM 允许您一次 运行 节点的多个版本(在多个 shell 之间)。这意味着当您 运行 nvm use 您正在 运行ning shell.

的上下文中使用该版本的节点

鉴于 PM2 运行s 作为守护进程,我相信它会启动自己的进程,这就是它不使用当前 nvm 选择版本的原因。

这个 GitHub 问题显示了解释器标志的用法,这可能对您的特定问题有所帮助 https://github.com/Unitech/pm2/issues/1034


如果这里的实际问题是 PM2 进程需要 运行 特定的 NodeJS 版本,而不是应用程序 PM2 正在产生,在 运行 之后重新启动 PM2 dameon nvm use 将使用 nvm 选择的当前版本的 Node 启动。