最近在用pm2部署前端项目时,遇到了一个js模块相关的问题。
项目是用的React + TS + Vite,配置pm2的配置文件ecosystem.config.js后,命令行执行 pm2 deploy ecosystem.config.js production setup后报了如下错误:
错误原因说的很清楚了,就是该文件被视作ES模块,因为package.json文件里设置了type字段值为module。根本原因是配置文件里使用了commonJS类型的引用方式。
解决方法有两个:
- 把
js后缀文件都改名为cjs后缀,但pm2配置文件只认js后缀,所以这个方法不可取 - 把
package.json里的type字段改为commonjs,就可以在当前工程环境下添加js文件了。
如此明显的提示,我花了2个下午的时间解决,归咎了一下原因,相比自己技术菜,倒不如说是出于对bug的恐惧心理,找解决方案都是看个大概,都没细看。上面图片的错误提示,还是今天沉下心来好好读了一遍才发现的。
技术人还是得沉得住气,没有克服不了的困难。