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 构建。

    如有错误,欢迎评论!

  • 相关阅读:
    AnyVal与AnyRef
    安装Zookeeper
    Kafka
    ZooKeeper总结
    Idea中JDK为1.8,还提示Diamond types are not supported at this language level
    Hive 和 Mysql
    Spark练习代码
    响应状态码
    http简介
    csrf
  • 原文地址:https://www.cnblogs.com/idiv/p/12598077.html
Copyright © 2011-2022 走看看