平时部署vue前端项目的时候,是npm install / npm run build打成一个静态包再给到服务器。
最近换成了Jenkins的方式部署,需要在Jenkins服务器上运行npm run build,然后自动上传到服务器。
不过有个问题,Jenkins服务器因为集团公司的要求,是不能联网的,无法安装依赖包(npm install)
解决思路
首先开发环境是Windows或者MacOS,开发环境的node_modules文件夹直接复制到Linux服务器上无法运行的,所以我先在自己的电脑跑一个Linux虚拟机,然后在虚拟机上搭好node环境,拉好代码后,安装npm install,然后把node_modules文件夹打包成node_modules.zip 后,传到Jenkins服务器。
问题点
把node_module.zip在Jenkins解压后,再次运行npm run build 后,提示如下错误:
Error: Cannot find module ../package.json Require stack : - /var/lib/jenkins/workspace/xxxxxx-project/node modules/.bin/vue-cli-service ... ... code: 'MODULE_NOT_FOUND',
问题解决
通过搜索,找到问题点,是因为node_modules目录下还有一些隐藏文件例如map文件等,在虚拟机压缩的时候(使用的命令是zip -r node_modules.zip node_modules),这些文件是没有被压缩进去的。
解决的办法是zip压缩增加参数,把这些隐藏文件压缩进压缩包:
zip -r -y node_modules.zip node_modules
文章评论