昨晚,在教我前端交流群里面的朋友搭建vue开发环境和构建vue项目的时候发现我自己之前能正常构建vue项目的现在却不行了,排查之下发现
通过脚手架构建项目的时候项目缺失了node_modules文件夹,在我排除了node环境、和配置的环境变量、vue-cli和webpack等一切都没有问题的情况下
差点重新删除node环境和vue脚手架等重装了,但是幸亏我多看了几眼cmd, 发现了貌似是和package-lock.json有关,于是我尝试通过:
npm install express 来解决问题,结果是 node_modules文件夹已经出来了,但是依然没有办法通过 npm run dev 正常运行
于是继续 npm install 发现还是不行,后来发现其实问题很简单,
npm install的执行过程是这样的:
1. 发出npm install命令
2. npm 向 registry 查询模块压缩包的网址
3. 下载压缩包,存放在(本地NPM缓存路径)目录
4. 解压压缩包到当前项目的node_modules目录
也就是说一个模块安装以后,本地其实保存了两份。一份是 npm 目录下的压缩包,另一份是 node_modules 目录下解压后的代码。但是,运行 npm install 的时候,只会检查 node_modules 目录,而不会检查 npm 目录。如果一个模块在 npm 下有压缩包,但是没有安装在 node_modules 目录中,npm 依然会从远程仓库下载一次新的压缩包。
利用已经在缓存中,之前已经备份的模块实现离线模块安装的 cache 机制已经在V5的时候重写了,缓存将由 npm 来全局维护,不再需要开发人员操心,离线安装时将不再尝试连接网络,而是降级尝试从缓存中读取,或者直接失败。就是如果你 offline(离线) ,npm将无缝地使用您的缓存。
所以解决办法就是执行命令清除缓存,npm cache clean --force 命令就是清除这种缓存的,
在执行清除命令之后再重新 npm install 初始化项目(如果卡住一直不动,可以重新 npm install 重新初始),初始化成功之后再通过 npm run dev 就可以正常运行了
由于解决问题的时候没有截图,所以只能使用文字来描述。
在解决了之后以后的项目就可以通过普通的方法构建项目了,直到再次出现这样的问题才需要进行上面的操作。
原文地址:https://www.cnblogs.com/hermit-gyqy/p/11219113.html