背景
用于项目中使用了阿里云的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,于是着手升级:
卸载node
通过命令:
$ 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
查看日志,没有报错。问题解决!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。