18

我们的 linux 服务器上运行着几个不同版本的节点,而我的服务基于节点 v0.11.14。但是,其他人的代码必须在较低版本的节点(低于 v0.11)上运行,否则他们的服务将停止服务。所以我无法将全局节点版本定义为 v0.11。我只想运行 pm2 来监控我基于节点 v0.11 的服务。

无论如何在节点 v0.11 上运行我的 pm2 而不更改全局节点版本?谢谢

4

4 回答 4

33

使用 pm2 并使用带有节点版本绝对路径的 --interpreter 标志指定节点版本:

sudo pm2 start app.js --interpreter=/home/ken/.nvm/v4.4.2/bin/node

或者

sudo pm2 start app.js --interpreter=/home/ken/.nvm/v7.4.0/bin/node

ETC..

如果您在我提到--interpreter="***.."的任何地方更改节点版本,应用程序将在确切的节点版本中运行。

完成上述方法后,使用以下命令进行验证

sudo pm2 show 'app name'
于 2019-01-22T10:31:07.283 回答
9

同时运行多个版本。在pm2中,您可以使用--interpreter选项并指定所需节点版本的路径。

如果您使用nfor version runn bin v4.2.0来获取此节点版本的路径。

于 2016-08-25T03:12:47.700 回答
9

请阅读以下主题: 通过 nvm 为每个应用使用不同版本的节点

我相信您想破解 nvm,但请相信我,它可以节省您的大量时间。

您可以在 pm2 所有者本身的线程中找到评论,其中指出您可以在不同的节点版本上运行多个应用程序,这是一个 JSON conf 内容:

{ 
  apps : [{
    name : 'API',
    script : 'api.js',
    interpreter : 'node@6.9.1'
 }]
}

如果您对上述解决方案感兴趣,请阅读此处的文档: PM2 - 进程文件

PM2 增强了您的流程管理工作流程。它允许您通过进程文件微调每个应用程序的行为、选项、环境变量、日志文件。它对于基于微服务的应用程序特别有用。

支持的配置格式为 Javascript、JSON 和 YAML。

于 2017-02-22T07:31:09.110 回答
-3

安装https://github.com/creationix/nvm

然后安装特定的节点版本:

nvm install 0.11.14

比在 shell 中使用特定版本:

nvm use 0.11.14

node -v // v0.11.14
于 2015-04-20T18:21:19.697 回答