zoukankan      html  css  js  c++  java
  • PM2守护babel-node

    如果你的nodejs项目使用了最新的语法,比如 importexport 代替了 commonjsrequire,那么使用pm2守护进程的时候可能会遇到一些问题。交代一下背景,我的node项目使用了import,文件名是.js而不是.mjs,所以无法直接使用 node 命令运行入口文件,如果要用 PM2 守护进程,需要指定babel-node解析器,可以采用下面的配置:

    // pm2.json
    {
      "name": "acl",
      "script": "./build/server.js", //脚本位置
      "exec_interpreter": "./node_modules/.bin/babel-node", // 指定解析器
      "interpreter_args": "--config-file ./node-babel.js", // 传给解析器的参数
      "exec_mode": "fork", // 自定义解析器和npm只能使用fork模式,无法使用集群
      "error_file": "./logs/error.log",
      "out_file": "./logs/console.log",
      "pid_file": "./logs/pid_file.pid",
      "log_date_format": "YYYY-MM-DD HH:mm:ss",
      "combine_logs": true,
      "merge_logs": true,
      "env": {
        "NODE_ENV": "qa"
      }
    }
    

    简单总结下:
    pm2的集群模式不支持自定义解析器,其实npm脚本也无法使用集群模式,只是运行npm脚本无需指定解析器,默认的node是可以运行的。如果非要运行包含 importexport 的node文件,又要支持集群模式,那么需要打包你的程序,可以使用 webpack 构建。

    如有错误,欢迎评论!

  • 相关阅读:
    docker log
    byte转String防止乱码
    SQL索引
    Redis 总结精讲
    如何保证消息队列是高可用的
    消息中间件(一)MQ详解及四大MQ比较
    @Bean和@Componet区别
    理解Spring的AOP和Ioc/DI就这么简单
    SpringBoot 基础
    《Linux 鸟哥私房菜》 第6章 Linux的文件权限与目录配置
  • 原文地址:https://www.cnblogs.com/idiv/p/12598077.html
Copyright © 2011-2022 走看看