导航

pm2 + babel-node 遇到的坑

Posted on 2021-11-29 16:58  小白撸代码  阅读(280)  评论(0编辑  收藏  举报

背景:

在项目开发中使用es6语法,在打包时需要转译因此下载了babel/core、babel/node、babel/preset-env。转译完成之后项目可以正常运行。但是用pm2启动项目的时候一直报错,如下图

 

这是因为用了es6规范的导出/导出。网上查了好多方法,说是将pm2的配置文件中的interpreter配置成babel-node或者将exec_interpreter配置成babel-node。但是修改之后还是报错。

对于网上的说法其实就是将pm2的默认解析器改成babel-node解析器【pm2默认解析器是node】这个并不能说是错误,但是不够全面,后来花费很长时间才找到坑在哪里。

解决办法:【需要两步:网上说的只是第一步】

第一步:将配置文件中的interpreter改成babel-node

第二步:确认配置文件中的exec_mode,确保exec_mode配置项是fork_mode。默认是fork_mode。

注意项:

  1、exec_mode:用于配置负载均衡的。它有两个值:fork_mode和cluster_mode。默认是fork_mode。

  2、exec_mode:‘cluster_mode’ 模式用于node解析器,如果要改变解析器必须使用‘fork_mode’模式。

  3、exec_mode:配置负载均衡是需要用‘cluster_mode’模式,同时需要配置instances【代表开启几个线程】

  4、‘cluster_mode’:代表多实例多进程,‘fork_mode’代表单实例多进程