使用sudo运行节点进程会引发语法错误

时间:2017-02-26 12:59:08

标签: node.js bash ubuntu syntax ecmascript-6

每当我使用sudo命令运行我的节点应用程序时,它似乎在我的Amazon EC2实例(Ubuntu 16.04)上抛出错误。但是每当我在没有sudo的EC2实例上运行它时,它就会正常运行。但是我在我的本地机器(Mac Sierra OS)上运行它,应用程序启动并正常运行。

我很好奇是否有人可能知道为什么会抛出SyntaxError,只有当我在远程EC2实例上使用sudo命令时才会这样做。

我在本地和远程计算机上使用节点v.7.6.0和npm v.4.1.2,使用NVM来管理两者上的版本。由于语法错误与ES2015或2016语法有关,因此我不确定为什么我的本地计算机能够在Amazon EC2实例(Ubuntu 16.04)无法正确解释时。

我收到的错误如下所示:

/var/www/mindmetrics/node_modules/twitter-crawler/lib/twitter-crawler.js:150
  api(method, ...params) {
              ^^^

SyntaxError: Unexpected token ...
    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> (/var/www/mindmetrics/node_modules/twitter-crawler/index.js:20:18)
    at Module._compile (module.js:409:26)
    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> (/var/www/mindmetrics/server/router/api.js:9:24)
    at Module._compile (module.js:409:26)
    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 module.exports (/var/www/mindmetrics/server/router/index.js:6:20)

1 个答案:

答案 0 :(得分:0)

我最好的选择是,在您的系统上,root拥有自己的node.js可执行文件,其版本不支持扩展运算符。

尝试运行sudo node --version并检查它是否确实是v.7.6.0。