PM2 - SyntaxError: объявления в области блока еще не поддерживаются вне строгого режима - PullRequest
0 голосов
/ 25 апреля 2019

В настоящее время я устанавливаю сервис NodeJS на сервере Ubuntu.Приложение написано в coffeescript и работает нормально самостоятельно.Вот как я настраиваю проект:

cd ~/test-project
nvm use v4.9.1
npm install
pm2 start index.js

Однако, когда я пытаюсь запустить его, используя pm2, я получаю ошибку ниже:

/usr/local/lib/node_modules/pm2/node_modules/needle/node_modules/debug/src/node.js:132
    let val = process.env[key];
    ^^^

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:373:25)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/usr/local/lib/node_modules/pm2/node_modules/needle/node_modules/debug/src/index.js:9:19)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)

И после некоторого тестирования кажется, что этоошибка возникает независимо от того, какой скрипт я запускаю с pm2, поэтому должно быть что-то, что не настроено правильно ..

Я не знаю, имеет ли это значение, но скрипту, который я пытаюсь запустить, нужен узел v4.9.1поэтому я использую NVM для использования этой версии, мне кажется, что он пытается запустить pm2 с той же версией узла как-нибудь?

Любой вклад очень ценится, так как я слишком долго застрял на этом !!

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

@ Вишну Пой, это полный вывод.Файл index.js выглядит следующим образом:

console.log('Hello World');
ubuntu@ip-172-31-32-5:~/test-project$ nano index.js 
ubuntu@ip-172-31-32-5:~/test-project$ node -v
v10.15.3
ubuntu@ip-172-31-32-5:~/test-project$ sudo pm2 start index.js
/usr/local/lib/node_modules/pm2/node_modules/needle/node_modules/debug/src/node.js:132
    let val = process.env[key];
    ^^^

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:373:25)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/usr/local/lib/node_modules/pm2/node_modules/needle/node_modules/debug/src/index.js:9:19)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
ubuntu@ip-172-31-32-5:~/test-project$ 

0 голосов
/ 25 апреля 2019
'use strict';

Добавьте вышеуказанную строку кода в первую строку файла скрипта.let используется, когда вы хотите, чтобы переменная находилась в блоке, который поддерживается в строгом режиме в node v4.

Подробнее см. В документации .

...