配置pm2支持babel

1,126 阅读1分钟

pm2

  • PM2是守护进程管理器,可以帮助您管理和保持应用程序在线
  • 官网
  • 网上查了好多资料,大部分都是误人子弟的。

背景

  • Node使用了babel(为了使用import), 真是*蛋。
  • 然后发现pm2一直报import的错。如下
  • 版本

node v12.13.1
pm2 4.4.1

模板地址

文件说明

  • 我们需要使用到3个文件
  • 文件1,index.js 项目启动文件
  • 文件2,process.js pm2配置文件(新建)
  • 文件3,server.js babel引入文件(新建)

1、在node中安装babel相关模块

npm install babel-core -D
npm install babel-preset-env -D
npm install babel-cli -g //这里需要全局

安装后, 新建.babelrc,内容为:

{
  "presets": [
    "env"
  ],
  "plugins": []
}

2、启动

babel-node index.js
发现可以正常启动了,index.js中使用到了es6语法

3、配置pm2

3.1 新建pm2启动配置文件processes.json

  • 注意:文件后缀为.json而不是.js

processes.json

//processes.json
{
  "apps": [
    {
      "name": "pm2-test",
      "cwd": "./",
      "script":"server.js",//这里填的是server.js
      "log_date_format": "YYYY-MM-DD HH:mm Z",
      "error_file": "./logs/app-err.log",
      "out_file": "./logs/app-out.log",
      "exec_mode":"fork",
      "watch": true,
      "ignore_watch": './logs', //不监听logs文件
      "env": {
        "COMMON_VARIABLE": "true"
      },
      "env_production" : {
        "NODE_ENV": "production"
      }
    }
  ]
}

3.2 新建server.js 入口文件

pm2官网babel说明

  • 模块安装
npm i babel-register -D
npm i babel-polyfill -D
  • 新建server.js,内容:
//server.js
require('babel-register')
require('babel-polyfill')
require('index.js')//目录根据你的项目而定

3.2 启动

pm2 start processes.js

  • 然后看看日志有无报错。
  • 没报错就Ok了

4、 附上一些依赖

//package.json
"devDependencies": {
    "babel-core": "^6.26.3",
    "babel-polyfill": "^6.26.0",
    "babel-preset-env": "^1.7.0",
    "babel-register": "^6.26.0"
  }