一、起因

在CentOS中使用yum install npm安装npm后,再安装pm2时,运行pm2 -v出错

  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
[root@zngw ~]# pm2 -v /usr/lib/node_modules/pm2/node_modules/chalk/source/index.js:103 ...styles, ^^^ SyntaxError: Unexpected token ... at createScript (vm.js:56:10) at Object.runInThisContext (vm.js:97:10) at Module._compile (module.js:549:28) at Object.Module._extensions..js (module.js:586:10) at Module.load (module.js:494:32) at tryModuleLoad (module.js:453:12) at Function.Module._load (module.js:445:3) at Module.require (module.js:504:17) at require (internal/module.js:20:19) at Object.<anonymous> (/usr/lib/node_modules/pm2/constants.js:10:14)

二、分析

这是因为npm版本过低导致的,用的是阿里云的更新源,这个版本中的npm版本是3.10.10,node版本是v6.17.1。node版本更新到v10及以上版本就可以了。

三、解决办法

1、卸载npm

bash
  • 01
npm uninstall npm -g

2、安装gcc

bash
  • 01
yum install gcc gcc-c++

3、下载node安装包

bash
  • 01
  • 02
  • 03
mkdir -p /home/npm cd /home/npm wget https://nodejs.org/dist/v10.14.1/node-v10.14.1-linux-x64.tar.xz

4、解压

bash
  • 01
  • 02
tar -xvf node-v10.14.1-linux-x64.tar.xz mv node-v10.14.1-linux-x64 node

5、添加环境变量

bash
  • 01
  • 02
  • 03
  • 04
  • 05
vi /etc/profile # 在最后添加 export NODE_HOME=/home/npm/node export PATH=$NODE_HOME/bin:$PATH

/home/npm/node 为前面node解压的目录

6、刷新

bash
  • 01
source /etc/profile

查看

bash
  • 01
  • 02
  • 03
  • 04
[root@zngw ~]# node -v v10.14.1 [root@zngw ~]# npm -v 6.4.1

7、安装pm2

bash
  • 01
npm install -g pm2

8、测试

bash
  • 01
  • 02
[root@zngw ~]# pm2 -v 5.1.1