PM2未安装最新版本的nodejs

时间:2017-01-17 18:23:06

标签: javascript node.js linux pm2 nvm

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

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

enter image description here

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

但是,pm2启动index.js再次出错并出现同样的错误:enter image description here

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

此外,未使用nvm安装v0.10.46

修改 以下是使用ps -ef | grep pm2运行的pm2守护进程:

pm2 daemons

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

1 个答案:

答案 0 :(得分:4)

NVM允许您一次运行多个版本的节点(在多个shell之间)。这意味着当您运行nvm use时,您正在该运行shell的上下文中使用该版本的节点。

鉴于PM2作为一个守护进程运行,我相信它会启动它自己的进程,这就是为什么它没有使用当前的nvm选择版本。

此GitHub问题显示了解释程序标记的用法,该标记可能对您的特定问题有用https://github.com/Unitech/pm2/issues/1034

如果此处的实际问题是PM2进程需要运行特定的NodeJS版本,而不是应用程序PM2正在生成,则在运行nvm use之后重新启动PM2 dameon将使其启动当前由nvm选择的节点版本。