大家好:
    我是烤鸭,今天分享一个node项目打包失败的问题。


1. 问题复现
 


之前一直出现node项目打包失败的情况,使用测试环境的jenkins没问题,生产的有问题。基本可以排除代码层面的问题。
报错信息如图。另外说一下出现了 connect ECONNREFUSED XXX,打包没停止,说明不是这个问题导致的失败(Error)。




 

2. 猜想问题来源


猜测可能是环境问题,Linux 服务器系统不一致,或者node 版本不一致导致的,又或者 mozjpeg  这个包有什么特殊。
质量同事反馈这个就是因为代码问题,跳过测试打包:

mozjpeg pre-build test failed

这个实在不知道怎么跳过了,因为测试环境是ok的,也没有打印这个,同样的命令和脚本。

后来我仔细看了一下日志,发现报错跟 几个目录有关。

 ./node_modules/image-webpack-loader
  node_modules/mozjpeg/vendor
  node_modules/optipng-bin/vendor/optipng

后来把测试环境打包jenkins的node-modules 这几个目录和生产的比较了一下,发现了一点问题。
这个 node_modules/optipng-bin 目录,生产和测试相差了 一个 vendor 目录。

3.  解决方案

把测试的vendor 目录拷贝到生产的jenkins打包npm生成node-modules的对应目录下就可以了。怀疑是 npm的时候链接失败,导致下载包失败(缺少文件)

这种问题不太好找原因,就算找到了也不太好解决,不能每次加完了包都手动拷贝到生产环境,先算作临时解决方案吧。

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐