«Неожиданный токен синтаксической ошибки …» при запуске pm2 в Amazon Linux

#node.js #pm2 #amazon-linux

#node.js #pm2 #amazon-linux

Вопрос:

Я установил, nodejs что предоставляется amazon-extras :

 sudo amazon-linux-extras install -y epel
yum install -y nodejs
node --version
  

Давайте установим pm2 сейчас:

 sudo npm install pm2@latest -g

/usr/bin/pm2 -> /usr/lib/node_modules/pm2/bin/pm2
/usr/bin/pm2-dev -> /usr/lib/node_modules/pm2/bin/pm2-dev
/usr/bin/pm2-docker -> /usr/lib/node_modules/pm2/bin/pm2-docker
/usr/bin/pm2-runtime -> /usr/lib/node_modules/pm2/bin/pm2-runtime
/usr/lib
└── pm2@4.5.0 

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.1.2 (node_modules/pm2/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN ws@7.2.5 requires a peer of bufferutil@^4.0.1 but none was installed.
npm WARN ws@7.2.5 requires a peer of utf-8-validate@^5.0.2 but none was installed.

  

Кажется, все в порядке. Но тогда запуск pm2 не так радует:

 $ pm2
/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)
  

В чем проблема и обходной путь для этого?

Ответ №1:

Это, скорее всего, связано с тем, что версия node on по умолчанию amazon linux похожа на невероятно устаревшую

 $ node --version
v6.17.1
  

Когда я выясню, как получить версию узла бронзового века (против каменного века), этот ответ будет обновлен.

Ответ №2:

Запустите совместимую версию pm2, это сработало для меня:

npm устанавливает pm2 @ ^ 3

Комментарии:

1. на какой версии узла вы это тестировали?

Ответ №3:

Версия node в Amazon Linux довольно устарела.

Попробуйте обновить его следующим образом:

 sudo npm install n -g
sudo n latest