用于项目中使用了阿里云的OSS功能,而阿里官方的Node.js类库(ali-oss)是基于ES6写的,所以应用须要在ES6环境下运行。node
在本地(MBP)上,经过修改package.json
文件中的script
来更改环境,代码以下:es6
"scripts": { "start": "node --harmony server.js" },
添加--harmony
后,经过nodemon
运行没有问题。json
在将应用经过PM2部署到阿里云的ECS(CentOS)中的时候,一直报错。提示没法正确运行,错误显示以下:segmentfault
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)
经过Google,发现给PM2配置ES6支持的方法以下:bash
命令行中添加--node-args="--harmony"
便可让应用以ES6运行:app
$ pm2 start my_app.js --node-args="--harmony"
在配置文件(ecosystem.json
)中,添加node_args
属性来添加ES6的支持:curl
[{ "name" : "ES6", "script" : "es6.js", "node_args" : "--harmony" }]
可是,在按照以上配置操做后,依然没法启用ES6的支持,仍是报错。在查看node的版本后,发现了问题所在:ui
$ node -v v0.10.*
好吧,看来是CentOS系统中yum
自带的node版本不支持ES6,因而着手升级:阿里云
经过命令:url
$ yum remove nodejs
卸载老版本的nodejs
按照官方的文档,经过以下命令安装4.*的LTS版本(root下):
curl --silent --location https://rpm.nodesource.com/setup_4.x | bash - yum -y install nodejs
安装结束后,确认版本:
$ node -v v4.4.4
再次尝试经过PM2部署,提示成功,经过pm2 logs
查看日志,没有报错。问题解决!