【NodeJs】【npm】npm安装electron报错
解决问题
npm安装electron报错一般来说是镜像源的问题。
electron的镜像源与一般的 vue 之类的镜像源地址不一样需要单独配置。
npm读取的全局配置一般是在
C:\Users\{用户}\.npmrc
这个配置文件中。
如果你找不到你的配置文件可以执行如下命令,
# 执行后会直接用txt打开你的配置文件 进行修改保存即可
npm config edit
cache=D:\Develop\nodeJs\node_cache
prefix=D:\Develop\nodeJs\node_global
registry=https://registry.npmmirror.com/
electron_mirror=https://npm.taobao.org/mirrors/electron/
上面是我原来的配置文件,由于淘宝的镜像源地址换了,从原来的
https://npm.taobao.org/ 换到了现在的
https://registry.npmmirror.com/ 导致原来可以下载现在不能下载。
因此只需要将上述配置修改成这样即可
registry=https://registry.npmmirror.com/
electron_mirror=https://cdn.npmmirror.com/binaries/electron/
electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/
然后 删除node_modules
文件夹,并执行下面命令清除缓存
npm cache clean --force
知识补充
- npm 命令补充
# 查看配置 也就是 .npmrc 中的配置
npm config list
# 查看配置中的某个值
npm get [key]
# 例如查看依赖源地址 这些key 就是.npmrc中的key
npm get registry
需要注意的是 npm 读取.npmrc
是有优先级的
如果在项目中也存在.npmrc
文件 npm 会优先读取 项目中的配置。如果某个key在项目中的.npmrc
找不到才会去读取全局的 .npmrc
所以项目希望有一些自己独有的配置时 可以在项目中放上自己的.npmrc
2. .npmrc
中值是什么意思
# npm缓存依赖包的目录
cache=D:\Develop\nodeJs\node_cache
# npm全局安装的目录
prefix=D:\Develop\nodeJs\node_global
# 定义npm的registry,即npm的包下载源
registry=http://registry.npmjs.org/
# 定义npm的代理服务器,用于访问网络
proxy=http://proxy.example.com:8080/
# 定义npm的https代理服务器,用于访问网络
https-proxy=http://proxy.example.com:8080/
# 是否在SSL证书验证错误时退出
strict-ssl=true
# 定义自定义CA证书文件的路径
cafile=/path/to/cafile.pem
# 自定义请求头中的User-Agent
user-agent=npm/{npm-version} node/{node-version} {platform}
# 安装包时是否自动保存到package.json的dependencies中
save=true
# 安装包时是否自动保存到package.json的devDependencies中
save-dev=true
# 安装包时是否精确保存版本号
save-exact=true
# 是否在安装时检查依赖的node和npm版本是否符合要求
engine-strict=true
# 是否在运行脚本时自动将node的路径添加到PATH环境变量中
scripts-prepend-node-path=true
- npm 依赖包缓存机制
npm install 之后会在项目中生成 package-lock.json
文件。该文件是用来锁定版本使用的,其中每个依赖下面都有一个integrity
这是一个hash值,通过hash算法生成出来的一个包的摘要。
然后npm会去D:\Develop\nodeJs\node_cache
缓存目录下找 是否已经下载过依赖,
如果下载过则 直接从缓存中解压出来,否则就去下载,并更新package-lock.json
和缓存
如下
"node_modules/@babel/parser": {"version": "7.27.7","resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.27.7.tgz","integrity": "sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==","dependencies": {"@babel/types": "^7.27.7"},"bin": {"parser": "bin/babel-parser.js"},"engines": {"node": ">=6.0.0"}},
所以有时担心缓存问题的时候 可以删除 package-lock.json
npm就会根据 package.json
去下载了。
还有package.json
的优先级大于package-lock.json