1 npm i 时间过长 卡顿问题
1)镜像问题
- .查看当前镜像源: npm config get registry / npm config list
- 不是淘宝的,更换为淘宝镜像
- 更换镜像: npm config set registry registry.npm.taobao.org
2)与本地node_modules版本冲突
删除当前的node_modules文件 快速完全删除node_modules
//安装npm包 rimraf
npm install rimraf -g
//通过cmd命令 进入所需删除的node_modules文件夹位置
cd node_modules
//输入命令进行删除
rimraf node_modules
3)与本地npm相关资源冲突
只要删除对应的文件夹,重新执行npm i 命令就可以
//删除对应的文件
C:\Users\Administrator\AppData\Roaming\npm
2 npm run dev 报错版本不一致
报错如下图:

解决方法,图中绿色文字:

3 node_modules导致IDEA项目很卡
将node_modules文件夹添加到excluded.
4 npm install 原理
就像上图中1,2 问题一样,当时虽然问题解决了,但是我还是很疑惑。群友回答说,你看看其原理就明白了。于是,搬运了此段文字。
npm是Node的模块管理器,功能极其强大,有了npm,我们只需一行命令,就能安装别人写好的模块。
1) npm install
npm install 命令用来安装模块到node_modules目录。
npm install <packageName>
安装之前,npm install 会先检查,node_modules目录之中是否已经存在指定模块。如果存在,就不再重新安装,即使远程仓库已经有了一个新的版本,也是如此。
如果你希望,一个模块不管是否按转过,npm都要强制重新安装,可以是用-f 或者 --force参数
npm install <packageName> --force
2) npm update
如果想更新已安装模块,就要用到npm update命令。
npm update <packageName>
它会先到远程仓库查询最新版本,然后查询本地版本。如果本地版本不存在,或者远程版本较新,就会安装。
3) registry
npm update 命令怎么知道每个模块的最新版本呢?
答案是npm模块仓库提供了一个查询服务,叫做registry。 以npmjs.org为例,它的查询服务网址是 registry.npmjs.org/。
这个网址后面跟上模块名,就会得到一个 JSON 对象,里面是该模块所有版本的信息。比如,访问 registry.npmjs.org/react,就会看到 react 模块所有版本的信息。
$ npm view react
# npm view 的别名
$ npm info react
$ npm show react
$ npm v react
registry 网址的模块名后面,还可以跟上版本号或者标签,用来查询某个具体版本的信息。比如, 访问 registry.npmjs.org/react/v0.14… ,就可以看到 React 的 0.14.6 版。
返回的 JSON 对象里面,有一个dist.tarball属性,是该版本压缩包的网址。
dist: {
shasum: '2a57c2cf8747b483759ad8de0fa47fb0c5cf5c6a',
tarball: 'http://registry.npmjs.org/react/-/react-0.14.6.tgz'
},
到这个网址下载压缩包,在本地解压,就得到了模块的源码。npm install和npm update命令,都是通过这种方式安装模块的。
5) 总结一下Node模块的安装过程
1.发出npm install命令
2.npm 向 registry 查询模块压缩包的网址
3.下载压缩包,存放在~/.npm目录
4.解压压缩包到当前项目的node_modules目录