摘要:背景用于项目中使用了阿里云的功能,而阿里官方的类库是基于写的,因此应用需要在环境下运行。在将应用通过部署到阿里云的中的时候,一直报错。
背景
用于项目中使用了阿里云的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.给PM2添加ES6的支持(/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. (/home/eee/www/tegaoya/production/source/app_server/controllers/upload.js:3:21)
通过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查看日志,没有报错。问题解决!
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/45646.html
摘要:在单核系统之上我们采用单进程单线程的模式来开发。由进程来管理所有的子进程,主进程不负责具体的任务处理,主要工作是负责调度和管理。模块与模块总结无论是模块还是模块,为了解决实例单线程运行,无法利用多核的问题而出现的。 前言 进程与线程是一个程序员的必知概念,面试经常被问及,但是一些文章内容只是讲讲理论知识,可能一些小伙伴并没有真的理解,在实际开发中应用也比较少。本篇文章除了介绍概念,通过...
摘要:对应的,服务端返回第六个请求为方式的请求,用来获取服务端对第五个请求的响应。但是,官方的解决方案是每个进程的服务器创建不同端口的服务器,专注用于握手和升级,由做握手请求的代理。 可以收藏我的博客 socket.io与cluster 在线上系统中,需要使用node的多进程模型,我们可以自己实现简易的基于cluster模式的socket分发模型,也可以使用比较稳定的pm2这样进程管理工具。...
摘要:技术栈觉得好的欢迎点个。前端后端部署演示全栈式的开发多人在线聊天室项目只适配了移动端,请使用浏览器的手机视图查看。之前删除了一个文件,但是没有删除中的对应值。编译时会报上面的错误。 技术栈 觉得好的欢迎点个star ^_^。 前端:Express & EJS & ES6 & Less & Gulp 后端:Express & SocketIO & MongoDB & REST API ...
摘要:形式非必须,也非必须调用把用函数表示在调用的时候用函数代码更加同步化三是什么异步操作的终极解决方案写法四总结不管用还是用还是用,都保证你写的的返回值是一个对象 一、promise入门 1. Promise对象是什么 回调函数的另一种原生实现,比之前回调函数的写法机构清晰,功能强大, 2.以前回调这么写 function a(fn){ let h = 1; setTime...
摘要:感谢老师,老师的慕课网教程购买阿里云服务器及域名终端连接阿里云服务器环境输入密码购买时的密码如果出现这个问题的解决方案解决方法查看硬盘挂在情况如果有数据盘的情况下查看硬盘使用情况通过设置快捷登录权限,可以增加几个拥有权限的用户下查 感谢 Scott 老师,Scott老师的慕课网教程 https://coding.imooc.com/clas... 1. 购买阿里云服务器及域名 2. ...
阅读 1226·2021-11-15 11:38
阅读 3322·2021-11-09 09:47
阅读 1825·2021-09-27 13:36
阅读 2928·2021-09-22 15:17
阅读 2374·2021-09-13 10:27
阅读 2381·2021-09-10 10:50
阅读 2739·2019-08-30 15:44
阅读 1026·2019-08-27 10:53