A.I*_*A.I 5 javascript linux node.js nvm pm2
以前,我v0.10.46在ec2服务器上安装了节点版本。对于最近的项目,我决定尝试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
Run Code Online (Sandbox Code Playgroud)
强制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
Run Code Online (Sandbox Code Playgroud)
另外,v0.10.46未使用nvm安装。
编辑:
这是正在运行的pm2守护程序,使用ps -ef | grep pm2:
请注意,ec2-user是登录用户,我也尝试过以root用户登录。我还以root用户身份安装了运行节点v6.9.1和pm2的nvm,但没有成功。我犯了同样的错误。
NVM 允许您一次运行多个版本的节点(在多个 shell 之间)。这意味着当您运行时,nvm use您将在该运行 shell 的上下文中使用该版本的节点。
鉴于 PM2 作为守护进程运行,我相信它会启动自己的进程,这就是它不使用当前 nvm 选择版本的原因。
此 GitHub 问题显示了解释器标志的用法,这可能对您的特定问题有帮助https://github.com/Unitech/pm2/issues/1034
如果这里的实际问题是 PM2 进程需要运行特定的 NodeJS 版本,而不是生成 PM2 应用程序,那么在运行后重新启动 PM2 守护进程本身将使其nvm use以 所选择的当前版本的 Node 启动nvm。