Electron项目依赖管理:最佳实践与常见错误

问题一

问题描述:

输入命令 pnpm add electron 后, electron 包在执行 postinstall 脚本时,尝试从网络上下载 Electron 二进制文件,但由于网络问题(如连接超时或代理设置问题),导致下载失败。

bash 复制代码
λ pnpm add electron
Packages: +75
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 75, reused 75, downloaded 0, added 75, done
node_modules/.pnpm/electron@31.3.1/node_modules/electron: Running postinstall script, failed in 23.1s
.../node_modules/electron postinstall$ node install.js
│ RequestError: connect ETIMEDOUT 20.205.243.166:443
│     at ClientRequest.<anonymous> (G:\wokespace\dev\DesktopApp\electron\electron-app\node_modules\.pnpm\g...
│     at Object.onceWrapper (node:events:634:26)
│     at ClientRequest.emit (node:events:531:35)
│     at origin.emit (G:\wokespace\dev\DesktopApp\electron\electron-app\node_modules\.pnpm\@szmarczak+http...
│     at TLSSocket.socketErrorListener (node:_http_client:500:9)
│     at TLSSocket.emit (node:events:519:28)
│     at emitErrorNT (node:internal/streams/destroy:169:8)
│     at emitErrorCloseNT (node:internal/streams/destroy:128:3)
│     at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
│     at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1605:16)
└─ Failed in 23.1s at G:\wokespace\dev\DesktopApp\electron\electron-app\node_modules\.pnpm\electron@31.3.1\node_modules\electron
 ELIFECYCLE  Command failed with exit code 1.

解决方案:

设置 electron 镜像源,使用国内的镜像源来加速下载,尤其是在网络连接较慢或者有防火墙的情况下。

bash 复制代码
npm config set electron_mirror "https://npmmirror.com/package/electron/"

问题二

问题描述:在设置npm 配置时,报错

bash 复制代码
λ npm config set electron_mirror "https://npmmirror.com/package/electron/"
npm ERR! `electron_mirror` is not a valid npm option

解决方案:

执行 npm config list 命令,查看当前的配置信息。

bash 复制代码
λ npm config list
; "user" config from C:\Users\Administrator\.npmrc

//registry.npmjs.org/:_authToken = (protected)
cache = "G:\\packages\\npm\\cache"
home = "https://npmmirror.com"
prefix = "G:\\packages\\npm\\global"
registry = "https://registry.npmmirror.com/"

; node bin location = G:\nodejs\node.exe
; node version = v18.19.1
; npm local prefix = G:\wokespace\dev\DesktopApp\electron\electron-app
; npm version = 10.2.4
; cwd = G:\wokespace\dev\DesktopApp\electron\electron-app
; HOME = C:\Users\Administrator
; Run `npm config ls -l` to show all defaults.

找到这个文件 .npmrc 地址 ; "user" config from C:\Users\Administrator\.npmrc , 然后打开新增一行:

bash 复制代码
electron_mirror=https://npmmirror.com/mirrors/electron/

可以通过 https://registry.npmmirror.com/binary.html 查看都有哪些二进制包

注意一定是 https://npmmirror.com/mirrors/${二进制包的名称}/,比如 https://npmmirror.com/mirrors/node-sass/

问题三

问题描述:

输入命令 npm install electron --save-dev 后,出现以下错误。

bash 复制代码
λ npm install electron --save-dev
npm ERR! Cannot read properties of null (reading 'matches')

解决方案:

  • 1.清理 npm 缓存
bash 复制代码
λ npm cache clean --force

npm WARN using --force Recommended protections disabled.
  • 2.验证并重建 npm缓存
bash 复制代码
λ npm cache verify

Cache verified and compressed (G:\packages\npm\cache\_cacache)
Content verified: 0 (0 bytes)
Index entries: 0
Finished in 0.013s
  • 3.直接删除 node_modules 目录,并再次运行 npm install
bash 复制代码
npm install --registry=https://registry.npmmirror.com
相关推荐
程序员码歌10 小时前
明年35岁了,如何破局?说说心里话
android·前端·后端
博客zhu虎康11 小时前
React Hooks 报错?一招解决useState问题
前端·javascript·react.js
灰海11 小时前
vue中通过heatmap.js实现热力图(多个热力点)热区展示(带鼠标移入弹窗)
前端·javascript·vue.js·heatmap·heatmapjs
王源骏11 小时前
LayaAir鼠标(手指)控制相机旋转,限制角度
前端
大虾写代码12 小时前
vue3+TS项目配置Eslint+prettier+husky语法校验
前端·vue·eslint
wordbaby12 小时前
用 useEffectEvent 做精准埋点:React analytics pageview 场景的最佳实践与原理剖析
前端·react.js
上单带刀不带妹12 小时前
在 ES6 中如何提取深度嵌套的对象中的指定属性
前端·ecmascript·es6
excel12 小时前
使用热力贴图和高斯函数生成山峰与等高线的 WebGL Shader 解析
前端
wyzqhhhh12 小时前
组件库打包工具选型(npm/pnpm/yarn)的区别和技术考量
前端·npm·node.js
码上暴富13 小时前
vue2迁移到vite[保姆级教程]
前端·javascript·vue.js