找不到PM2命令

时间:2016-07-04 13:09:52

标签: node.js linux

我将node.js和npm安装到我的centOS 7服务器上。但我对pm2有疑问。 其实真正的问题是我没有linux的经验,也不知道如何改变路径。 这是文件夹结构。

close: function (srcCmd) {
   var closeResult = true;
   asyncThing(function(result) {
      if (result)
         closeResult = true;
      else
         closeResult = false;
   }); 

   if (closeResult !== false) {
       this.closeDialog();
   }
},

我输入了文件夹* bin * code * error_docs * httpdocs * lib64 * logs * tmp * var * chat(my node.js folder) * node_modules * pm2 * sockjs * server.js * dev * etc * lib * local * sbin * usr 并使用cd chat安装了pm2。

之后我尝试通过键入npm install pm2服务器返回"找不到pm2命令"来使用pm2作为我的server.js。我可以使用node.js而没有任何问题,但pm2无法正常工作。

我该如何解决这个问题?

9 个答案:

答案 0 :(得分:52)

全球安装PM2:

以root身份运行:

npm i -g pm2

或者如果用户是sudo-er

sudo npm i -g pm2

然后返回用户(如果是root用户创建的话,则保留在root用户中)并运行它:

pm2 start server.js

答案 1 :(得分:8)

PM2 Node.js应用程序的进程管理器。 PM2基本上管理应用程序(在后台作为服务运行它们)。这就是我们使用sudo权限帐户全局安装PM2的方法

emails = regmatches(df, gregexpr("([_a-z0-9-]+(\\.[_a-z0-9-]+)*@enron.com)", df))

-g选项告诉npm全局安装模块,以便它在系统范围内可用。 安装完成后,请将安装的路径检查为:

Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,  : 
  arguments imply differing number of rows: 1, 2, 0, 5

现在,我们需要在启动bash脚本中添加此路径。添加在〜/ .bashrc文件中的任何位置添加以下行。

sudo npm install -g pm2

现在重新登录或获取bash脚本,如下所示(以便运行bash脚本并设置路径)

whereis pm2
pm2: /opt/node/bin/pm2 /opt/node/lib/node_modules/pm2/bin/pm2

现在它应该运行。检查pm2的状态

export PATH=$PATH:/opt/node/lib/node_modules/pm2/bin

答案 2 :(得分:2)

就我而言,我使用 zsh shell 运行 MacOs Big Sur。 您需要做的第一件事是获取 npm-global 路径的前缀:

npm config get prefix

然后这将返回如下内容:

/Users/your_user/npm-global

复制此路径,并在最后添加/bin -> /home/your_user/npm-global/bin。然后我们将这个路径导出到 bash 配置中。

export PATH=$PATH:/Users/your_user/npm-global/bin 

我相信你所有的全局 npm 包现在都可以正常工作了。

答案 3 :(得分:1)

将端口80与PM2一起使用时出错?

错误的解决方法是尝试使用sudo

执行此操作的正确方法是以root sudo su身份登录,然后运行pm2 start app.js --name "whatever" --watch

以root用户身份登录,无需配置任何bashrc或个人资料文件。但是,作为root用户,脚本可以危险地使用nodejs的exec()函数。要避免这种情况,请先使用脚本执行root操作,然后在超时后降低权限:

// I use port 80 first.. at this point the script's UID is root.

app.listen(80);

// After 2 seconds we switch to UID `azureuser`, which obviously isn't root anymore.

setTimeout(function() {
  process.setuid("azureuser");
}, 2000);

答案 4 :(得分:1)

该选项对我有帮助:

sudo npm i -g pm2

答案 5 :(得分:0)

全局安装PM2并以root用户身份运行所有内容

sudo apt-get install npm
sudo npm i -g pm2
sudo ln -s /usr/bin/nodejs /usr/bin/node

您很高兴

答案 6 :(得分:0)

如果您使用nvm来安装节点和npm,请为普通用户安装pm2。

以root身份运行:

sudo su
vim ~/.bashrc

在下面的代码后面添加NVM_DIR,将其更改为普通用户的主文件夹:

export NVM_DIR="/home/[PLEASE CHANGE]/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  
# This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. 
"$NVM_DIR/bash_completion"  
# This loads nvm bash_completion

最后:

source ~/.bashrc

答案 7 :(得分:0)

sudo npm i -g pm2

对我有用。

答案 8 :(得分:0)

如果您是通过NPM安装的,则无法正常运行,也可以创建符号链接:

ln -s /<your-user>/.npm-global/lib/node_modules/pm2/bin/pm2 /usr/bin/pm2

之后,您将可以拨打电话:

pm2