当前位置: 首页 > news >正文

【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

知识补充

  1. 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
  1. 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

相关文章:

  • 如何用 FastAPI 和 RBAC 打造坚不可摧的安全堡垒?
  • Selenium基本用法
  • 搜索进化史:从快搜索到慢思考的智能飞跃
  • CloudFormation 实现 GitHub Actions OIDC 与 AWS ECR 的安全集成
  • 《推客小程序全链路开发指南:从架构设计到裂变运营》
  • 使用Docker部署mysql8
  • 信息抽取数据集全景分析:分类体系、技术演进与挑战_DEEPSEEK
  • Oracle 临时表空间相关操作
  • 高防IP通常会应用在哪些行业当中?
  • nt!MiFlushSectionInternal函数分析从nt!IoSynchronousPageWrite函数到Ntfs!NtfsFsdWrite函数
  • PHP「Not enough Memory」实战排错笔记
  • 便利的隐形代价?智能设备正在“偷听”你的生活——物联网时代的隐私深度危机
  • window显示驱动开发—DirectX 图形内核子系统(三)
  • clion与keil分别配置项目宏定义
  • 问卷调查[mqtt dht]
  • 【C/C++】单元测试实战:Stub与Mock框架解析
  • AI+实时计算如何赋能金融系统?DolphinDB 在国泰君安期货年度中期策略会的演讲
  • 安心联车辆监控管理平台应用场景分析
  • IPv6配置
  • 每天一个前端小知识 Day 14 - 前端状态管理深入实践