金沙澳门官网网址_金沙国际登陆

欢迎加入金沙澳门官网网址体验更多不一样的精彩.,金沙国际登陆提供最丰厚回馈!,因为金沙澳门官网网址这里的游戏是多种多样的,为大家打造一个最专业的化的超级五星酒店。

金沙澳门官网网址 > 金沙澳门官网网址 > 怎样写好,使用pm2自动化安排node项目

原标题:怎样写好,使用pm2自动化安排node项目

浏览次数:118 时间:2019-11-11

es2015/es2016/es2017/latest

  • {
  • "presets": ["es2015"]
  • }

低版本浏览器引起的主题素材

近期费用一个基于webpack+babel+react的体系,日常地点是在chrome浏览下面开拓,chrome浏览器开荒因为支撑当先四分之二新的js本性,所以平常不怎么必要polyfill, 举个例子Promise,string实例的includes方法等。纵然在低版本浏览器中,通过babel-runtime的polyfill也是可以转移的,可是事不还是,项目在IE9浏览器上报错,错误如下截图:

图片 1

很醒目,项目中运用了Promise,可是IE9又不扶持该新特点,所以变成报错。

那么, 难点来了,babel-runtime不是会自动polyfill项目中的Promise成效么,为什么未有吗?上面就来意气风发探究竟。

1.1、使用pm2管理的node程序的功利

  1. 监听文件变化,自动重启程序
  2. 支撑品质监控
  3. 负载均衡
  4. 次第崩溃自动重启
  5. 服务重视新运维时自动重新开动
  6. 自动化安排项目

react

react是二个相比非常的合法推荐的presets,大约是因为非常的火呢。参加了flow,jsx等语法,具体能够看文档。

babel-runtime真的帮大家转移了么

按照babel官网的介绍,babel-runtimebabel-polyfill相符,都以对不帮忙的新效率实行polyfill,只是:

  • babel-runtime: 他不会传染全局境况,会在部分進展polyfill,此外不会转移一些实例方法,如'abc'.includes('a'),当中的includes方法就不会翻译。它经常结合babel-plugin-transform-runtime来使用。

  • babel-polyfill:轻易残暴,他会传染全局碰到,比方在不协理Promise的浏览器会polyfill多少个大局的Promise对象供调用;其余,不协理的实例方法也在对应的构造函数原型链上增多要polyfill的不二法门。

那么地点例子中的Promise,babel-runtime真的帮咱们转移了么,在项目中测量试验一下,发下它的确调换了。

  let _promise = new Promise()

如上,在代码中测量检验一下,查六柱预测应的调换文件:

图片 2

能够见见,在项目中,babel-runtime确实帮大家实行了polyfill,那为何还有恐怕会报下边包车型大巴Promise未定义的荒谬啊???

4、大概会越过的坑

  • 在window系统下 vscode的通令路程序,以至powershell实施安排的授命时,现身布局失败

    pm2 deploy deploy.yaml production setup

图片 3

 

施工方案:使用git命令行来施行

 

latest

latest是二个独特的presets,满含了es二〇一四,es2014,es2017的插件(近日停止,今后有es2018也会包蕴进来卡塔 尔(阿拉伯语:قطر‎。

在跨浏览器中的接纳

自己的大大多后台项目,平日会供给运用人口利用chrome浏览器,只采用babel-runtime就能够满足要求,因为chrome超越八分之四js新特点都帮助,如字符串实例的includes, 就算babel-runtime不会编写翻译,然而浏览器本身会援助,不会时有产生难题。可是对于跨浏览器的类型就必要专门构思了。

  • 对此跨浏览器的花色,尤其是低版本的IE时,建议选拔babel-polyfill, 它能够对静态可能实例方法都会更改

  • 对于钦赐的浏览器的项目如chrome,直接动用babel-runtime来打开转变,它不会对实例方法进行转变

3.1 在品种根目录下新建叁个 deploy.yaml 文件

# deploy.yaml
apps:
  - script: ./start.js       # 入口文件
    name: 'app'              # 程序名称
    env:                     # 环境变量
      COMMON_VARIABLE: true
    env_production:
      NODE_ENV: production

deploy:                     # 部署脚本
  production:               # 生产环境
    user: lentoo            # 服务器的用户名
    host: 192.168.2.166     # 服务器的ip地址
    port: 22                # ssh端口
    ref: origin/master      # 要拉取的git分支
    ssh_options: StrictHostKeyChecking=no # SSH 公钥检查
    repo: https://github.com/**.git # 远程仓库地址
    path: /home              # 拉取到服务器某个目录下
    pre-deploy: git fetch --all # 部署前执行
    post-deploy: npm install &&  pm2 reload deploy.yaml --env production # 部署后执行
    env:
      NODE_ENV: production

在晋级到了Babel6.x版本之后,全部的插件都以可插拔的。那也意味你安装了Babel之后,是不能够源办公室事的,必要陈设相应的.babelrc文件能力表达全部的功用。上面就对Babel的presets和plugins配置做贰个精短深入分析。

参谋文献

1、webpack文档
2、babel的polyfill和runtime的区别
3、babel原理和polyfill和runtime的区别
4、webpack+babel+transform-runtime, IE下提示Promise未定义?
5、ES6 + Webpack + React + Babel 怎么样在低版本浏览器上喜悦的游艺(下卡塔 尔(阿拉伯语:قطر‎

3.4 该安插流程相近适用前端项目

如vue-cli的档案的次序,自动计划到服务器,自动试行npm run build 命令,生成的dist目录,内定到nginx的静态文件目录下。

moduleName: string,默认babel-runtime

动用相应module管理。

此处的options日常不用本身安装,用默许的就能够。那一个插件最大的效应至关心珍视要有几下几点:

  • 消除编写翻译中生出的再一次的工具函数,减小代码体积
  • 非实例方法的poly-fill,如Object.assign,不过实例方法不协理,如"foobar".includes("foo"),此时需求独自引进babel-polyfill

更加的多细节参见文档。

Promise未定义错误真凶

既然babel-runtime会对经过babel编写翻译的代码举办代码调换,那么能够推测:

荒唐的真正原因是一些代码没有经过babel-runtime编译转变

首先想到的是node_modules模块,因为一些npm包在webpack配置中无需babel的编写翻译,而这几个包或者需求Promise的原生支持功效.

vuex,以前就有人在github上提出过相似的难点vuex requires a promise polyfill in this browser。因为在它源码里面是那样判别的:

assert(typeof Promise !== 'undefined', "vuex requires a Promise polyfill in this browser.");

那般的景况须求着重,经过每一种核查,在本项目中,未有发觉是因为npm包引起的。那么还应该有意气风发种大概:webapck自个儿发生的生龙活虎部分代码

通过定位错误发生地方,发掘真就是webpack自个儿产生的代码要求Promise。在webpack的官方网址也找到了答案

图片 4

能够窥见,在webpack使用异步加载模块时, require.ensure急需原生协理Promise,因为我们项目是按需加载,所以才变成地方难点的产生。即:

webpack生成的new Promise相关代码, 超过babel的babel-runtime的调整范围,独有polyfill全局的Promise本领缓和此问题。

消除地点的主题素材, 超过伍分之多少人会想到利用任何Promise的polyfill库,如babel-polyfill或者es6-promise等,那诚然是叁个化解办法,可是能够组成babel-runtime的调换职能来为大局Promise实行polyfill,不会引进额外的库。代码如下:

// 将Promise抛出为全局对象
window.Promise = Promise

接下来babel-runtime会将其转会为如下:

// 将Promise抛出为全局对象
window.Promise = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_promise___default.a()

与上述同类,将babel-runtime的Promise的polyfill挂到window下,到达任何Promise的polyfill的效用。

3、通过pm2配置文件来机关铺排项目

确认保障服务器安装了pm2,未有安装的话先安装

npm install pm2 -g
stage-0

除了那个之外stage-1的内容,还包罗以下插件,更加多细节请看文档。

  • transform-do-expressions // 编译do表达式
  • transform-function-bind // 编译bind运算符,也就是::

3.3 使用pm2陈设项目

每回铺排前先将当地的代码提交到长途git宾馆

  • 第贰次配置

    pm2 deploy deploy.yaml production setup

陈设到位后,既可登录服务器查看配置的目录下是不是从git上拉取了花色

  • 再次安插

    pm2 deploy deploy.yaml production upddate

     

stage-4

已变成的议案,与年度公布的release有关,满含二零一五年到新春职业宣布的内容。比如,现在是二〇一六年,stage-4应该是总结es二零一四,es二零一五,es2017。经过测量试验,babel-preset-stage-4这么些npm包是不设有的,假设您独自的必要stage-4的有关办法,须求引进es2016~es2017的presets。

2.1、全局安装

npm install pm2 -g 

 

polyfill: boolean,默认true

利用babel的polyfill,可是无法完全代表babel-polyfill。

3.2、配置git的ssh免密认证

  1. 在服务器中生成rsa公钥和私钥,当前是 centos7 下进行

  2. 前提服务器要安装git,未有设置的先安装git,已设置的跳过

    yum –y install git
    
  3. 变迁秘钥

     ssh-keygen -t rsa -C "xxx@xxx.com"
    

    在~/.ssh目录下有 id_rsa和 id_rsa.pub七个文本,个中id_rsa.pub文件里存放的正是公钥key。

  4. 签到到GitHub,点击右上方的头像,采取settings ,点击Add SSH key,把id_rsa.pub的内容复制到里面就能够。

 

图片 5

 

stage-2

除外stage-3的内容,还包括以下插件,越来越多细节请看文档。

  • transform-class-properties // 编译静态属性(es二〇一四)和品质初始化语法注明的品质(es二〇一五)。

 

loose: boolean,默认false

是还是不是使用宽松形式,若是设置为true,plugins里的插件如果允许,都会选取宽松方式。

1、pm2简介

pm2(process manager卡塔尔是多个历程处理工科具,维护贰个进程列表,可以用它来管理你的node进度,担当全数正在运营的经过,并查阅node进度的情景,也支撑质量监察和控制,负载均衡等功用。

env

  • {
  • "presets": ["env", options]
  • }

这两天增加生产数量的多个抉择,有以下options选取。

2.2、常用命令

  • 起步叁个node程序 

    pm2 start start.js

 图片 6

  • 运营进度并点名应用的次序名

    pm2 start app.js --name application1

     

  • 集群格局运营

 

// -i 表示 number-instances 实例数量
// max 表示 PM2将自动检测可用CPU的数量 可以自己指定数量
pm2 start start.js -i max

图片 7

 

  • 累计进度监视

    // 在文书改变的时候会再一次起动程序 pm2 start app.js --name start --watch

图片 8

 

  • 列出全数进度

    pm2 list
    pm2 ls // 简写
    
     
    
  • 从进度列表中剔除进程

    // pm2 delete [appname] | id
    pm2 delete app  // 指定进程名删除
    pm2 delete 0    // 指定进程id删除
    
     
    
  • 除去进度列表中具有进度

    pm2 delete all
    

 

  • 翻开有个别进程具体景况

    pm2 describe app
    

 

图片 9

 

  • 查阅进程的能源消耗境况
    pm2 monit
    

 

图片 10

 

  • 重启进程

     pm2 restart app // 重启指定名称的进程
     pm2 restart all // 重启所有进程
    
     
    
  • 查阅进度日志

     pm2 logs app    // 查看该名称进程的日志
     pm2 logs all    // 查看所有进程的日志
    
     
    
  • 安装pm2开机自启

敞开运行设置,此处是CentOS系统,别的系统替换最后叁个增选(可筛选:ubuntu, centos, redhat, gentoo, systemd, darwin, amazon卡塔尔

   pm2 startup centos 

 

然后遵照提醒要求输入的授命实行输入

末段保存设置

pm2 save

本文由金沙澳门官网网址发布于金沙澳门官网网址,转载请注明出处:怎样写好,使用pm2自动化安排node项目

关键词:

上一篇:解决方案

下一篇:cli3脚手架的陈设以至利用,大学专科学生自学