PM2 - SyntaxError:严格模式之外尚不支持块范围声明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PM2 - SyntaxError:严格模式之外尚不支持块范围声明相关的知识,希望对你有一定的参考价值。

我目前正在Ubuntu服务器上安装NodeJS服务。该应用程序是用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?

任何输入都非常感激,因为我已经被困在这个太久了!!

答案
'use strict';

将上面的代码行添加到脚本文件的第一行。如果希望将变量限定为let中严格模式支持的块,则使用node v4

有关详细信息,请参阅documentation

另一答案

@Vishnu Sing这是完整的输出。 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$ 

以上是关于PM2 - SyntaxError:严格模式之外尚不支持块范围声明的主要内容,如果未能解决你的问题,请参考以下文章

Angular:在 Chrome 的严格模式之外尚不支持块范围的声明

未捕获的语法错误:在严格模式之外尚不支持块范围的声明(let、const、函数、类)[重复]

流星不会启动。 ejson.js 中的“在严格模式之外尚不支持块范围声明(let、const、函数、类)”

SyntaxError:在严格模式下使用 const

React Native:SyntaxError:严格模式不允许在词法嵌套语句中声明函数

尚硅谷设计模式学习(21)---[解释器模式(Interpreter Pattern)]