PM2中无法开启ES6的解决方案

发布时间:2019-06-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PM2中无法开启ES6的解决方案脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

背景

用于项目中使用了阿里的OSS功能,而阿里官方的Node.js类库(ali-oss)是基于ES6写的,因此应用需要在ES6环境下运行。

Node

在本地(MBP)上,通过修改package.json文件中的script来更改环境,代码如下:

  "scripts": {
    "start": "node --harmony server.js"
  },

添加--harmony后,通过nodemon运行没有问题。

PM2

将应用通过PM2部署到阿里云的ECS(CentOS)中的时候,一直报错。提示无法正确运行,错误显示如下:

tegaoya-1 (err): /home/eee/www/tegaoya/production/source/node_modules/ali-oss/lib/client.js:295
tegaoya-1 (err): proto.request = function* (params) {
tegaoya-1 (err):                         ^
tegaoya-1 (err): SyntaxError: Unexpected token *
tegaoya-1 (err):     at Module._compile (module.js:439:25)
tegaoya-1 (err):     at Object.Module._extensions..js (module.js:474:10)
tegaoya-1 (err):     at Module.load (module.js:356:32)
tegaoya-1 (err):     at Function.Module._load (module.js:312:12)
tegaoya-1 (err):     at Function._load (/usr/lib/node_modules/pm2/node_modules/pmx/lib/transaction.js:62:21)
tegaoya-1 (err):     at Module.require (module.js:364:17)
tegaoya-1 (err):     at require (module.js:380:17)
tegaoya-1 (err):     at Object.<anonymous> (/home/eee/www/tegaoya/production/source/libs/AliOssStorage.js:4:11)
tegaoya-1 (err):     at Module._compile (module.js:456:26)
tegaoya-1 (err):     at Object.Module._extensions..js (module.js:474:10)
tegaoya-1 (err):     at Module.load (module.js:356:32)
tegaoya-1 (err):     at Function.Module._load (module.js:312:12)
tegaoya-1 (err):     at Function._load (/usr/lib/node_modules/pm2/node_modules/pmx/lib/transaction.js:62:21)
tegaoya-1 (err):     at Module.require (module.js:364:17)
tegaoya-1 (err):     at require (module.js:380:17)
tegaoya-1 (err):     at Object.<anonymous> (/home/eee/www/tegaoya/production/source/app_server/controllers/upload.js:3:21)

给PM2添加ES6的支持

通过Google,发现给PM2配置ES6支持的方法如下:

命令行

命令行中添加--node-args="--harmony"即可让应用以ES6运行:

$ pm2 start my_app.js --node-args="--harmony"

配置文件

在配置文件(ecoSystem.json)中,添加node_args属性来添加ES6的支持:

[{
  "name" : "ES6",
  "script" : "es6.js",
  "node_args" : "--harmony"
}]

问题

但是,在按照以上配置操作后,依然无法启用ES6的支持,还是报错。在查看node的版本后,发现了问题所在:

$ node -v
v0.10.*

好吧,看来是CentOS系统中yum自带的node版本不支持ES6,于是着手升级:

@H_765_126@卸载node

通过命令:

$ yum remove nodejs

卸载老版本的nodejs

安装新版本

按照官方的文档,通过如下命令安装4.*的LTS版本(root下):

@H_777_160@curl --silent --location https://rpm.nodesource.COM/SETUP_4.x | bash - yum -y install nodejs

安装结束后,确认版本:

$ node -v
v4.4.4

尝试

再次尝试通过PM2部署,提示成功,通过pm2 LOGs查看日志,没有报错。问题解决!

脚本宝典总结

以上是脚本宝典为你收集整理的PM2中无法开启ES6的解决方案全部内容,希望文章能够帮你解决PM2中无法开启ES6的解决方案所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。