简介
为了巩固一下身为前端开发小菜鸟必备的脸面,从而让脸皮更加厚实一些,在这条道路活的更加滋润一些,故此开始整理一些项目中遇到的一些问题。
欢迎各位大牛莅临指导,从而让我在加厚脸皮的道路上走的更远,从而可以用脸皮挡子弹,挡导弹,挡核弹,然后无敌。哈哈哈!
这次遇到的问题是当完整的拷贝一份项目(包含node_modules依赖包)到内网环境时,它并不能正常的启动(内网已经下载好node,并且node和npm都是全局环境变量),会出现缺少vue-cli-service或者其他模块找不到的报错信息。
问题复现
设备
外网在mac系统上开发,要拷贝压缩打包一份到window系统上。
报错内容
探索原因
经过对比发现,在node_modules的.bin目录下,都是一些快捷方式(下面第一张图片),经过压缩文件夹再重新解压后发现,在window电脑上只包含一个指向真正资源的文件路径,通过文件路径可以找到真正的资源(下面第二张图片)。然而压缩后的文件并不是和原始项目一样是快捷方式,它无法直接指向真正的资源,因此在npm run serve的时候会报错。
探讨解决方法
- 分别从tar、zip、tar.gz等不同的压缩方式,结合不同的压缩参数试图去解决存在快捷方式的问题,然而并没有什么用;
- 从网上搜索了解到,是npm和cnpm打包方式的不同引起的这种问题,使用 npm install或者 cnpm install --by-npm,依然无用;抱着试一试的态度使用yarn去下载依赖,果然真的就是试一试,无效。
- 不压缩,直接拷贝文件,花费时间太长,一个小时只拷贝了100mb,时间成本太高,划不来。
- 当在npm中有本地缓存的时候,npm会率先从本地缓存中下载相应的依赖,如果找不到再去网上下载资源,因此我打算将本地依赖放到内网所在服务的npm下面,具有一定的实操性。然而在内网环境中使用npm install,总是报很多莫名其妙的错误,放弃。
最终解决方法
最终发现是mac系统和window系统对npm的支持存在一定的差异性,当在window系统使用npm install下载是不会创建快捷方式的,于是完美解决。