【问题标题】:PM2 not taking the latest version of nodejs installedPM2 未安装最新版本的 nodejs
【发布时间】:2017-01-17 18:23:06
【问题描述】:

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

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

因此,我将使用 nvm 的 node 版本更新到最新的 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不采用最新版本的node并坚持使用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 用户身份安装了运行节点 v6.9.1 和 pm2 的 nvm,但没有成功。我得到同样的错误。

【问题讨论】:

  • pm2 守护进程是以与您登录时相同的用户身份运行,还是以不同的用户身份运行?
  • @Paul 更新了问题,希望对您有所帮助。是同一个用户。

标签: javascript node.js linux pm2 nvm


【解决方案1】:

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

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

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


如果这里的实际问题是 PM2 进程需要运行特定的 NodeJS 版本,而不是应用程序 PM2 正在生成,那么在运行 nvm use 之后重新启动 PM2 守护程序本身会使其以当前版本启动nvm选择的节点。

【讨论】:

  • 感谢您的回复。我已经检查了上面的线程并尝试了 --interpreter 命令。但它似乎没有工作。
  • @A.I 详细说明一下,您是想让 Node 应用程序在特定版本的 Node 或实际的 PM2 守护程序下运行吗?
  • 实际的 pm2 守护进程。根据提示,我杀死了守护进程并重新启动。瞧,它奏效了。 pm2 守护进程更新为最新版本的节点
  • @A.I 完美!是的,这是一个实际的单独过程,这将是下一个建议!很高兴它开始工作了!
  • 谢谢你能更新你的答案以便我接受它。
猜你喜欢
  • 2018-10-16
  • 1970-01-01
  • 2016-03-18
  • 1970-01-01
  • 2019-12-16
  • 2022-11-03
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多