用於項目中使用了阿里雲的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
查看日誌,沒有報錯。問題解決!