为了使用 ES6/7 的新功能, 而且不进行转码, 项目一直使用 babel-node 启动脚本, 同时使用 pm2 进行项目管理, 开发环境下 babel-node 可以正常工作, 生产环境下 pm2 并不支持使用 babel-node,

Because the cluster mode has an hardcoded interpreter which is node

也就是说 cluster 模式下 interpreter 是写死的使用的node, “exec_interpreter” 参数会被忽略.

通过以下方式通过 pm2 cluster 模式使用 ES6/7 新功能

http://pm2.keymetrics.io/docs/tutorials/using-transpilers-with-pm2#require-hook

  1. 安装 babel-register, babel-polyfill
  2. 新建入口文件index.js, 假设原来的入口文件为app.js

    1
    2
    3
    require('babel-register');
    require('babel-polyfill');
    require('app.js'); // 设置对应位置
  3. 在对应的 pm2.json 文件中设置, 入口文件为 index.js.