electron | electron-packager打包问题汇总

文章目录

  • 更新记录
  • 欢迎直接提问
  • 前言
  • operation not permitted
    • 问题现象
    • 解决方案
      • 更换管理员用户
      • 改用electron-builder
  • 打包慢,无反应
    • 问题现象
    • 问题分析
    • 解决方案
      • 1. 修改npm镜像
      • 2. 修改系统环境变量
  • Error: read ECONNRESET

更新记录

2019/10/18 更新 权限不足 问题,添加改用electron-builder方法。
2019/11/21 更新 打包超时问题 问题,添加 修改系统变量 方法。

欢迎直接提问

为避免幸存者误差带来的困境,检验方法的普适性,欢迎大家在本文提出的方法行不通时,直接提问!

前言

electron-packager的使用非常简单,但在实际打包中却遇到了诸多问题,下面将逐一列举并分析。

operation not permitted

问题现象

打包时,npm首先需要下载electron内核到缓存文件夹下,此时读写文件夹会出现权限问题。

EPERM: operation not permitted, lstat 'C:\Users\XXXX\AppData\Local\Temp\electron-download-rtze3Z\electron-v6.0.9-win32-x64.zip'

解决方案

更换管理员用户

假如你所使用的用户不是管理员,那么打包时会遇到没有权限的问题,所以需要将当前用户提权到管理员权限或切换至管理员角色(注意:是用管理员用户登录,而不是使用管理员权限运行cmd)

改用electron-builder

若还未解决,请换用electron-builder。
经测试,使用electron-builder不会出现因下载prebuilder文件而出现的权限问题。(2019.10.22更新)

打包慢,无反应

问题现象

> [email protected] pack X:\myElectronProj\electron-demo
> electron-packager . electron-client --win --out ../electron-client --arch=x64 

electron-packager打包并不显示当前进度,也没有报错,但一直没有结果。

问题分析

electron-packager在当前机器的首次打包前,会下载electron的预编译文件至当前用户,而electron-prebuilder的默认源在国外,在网络不好的情况下,即便有代理,速度非常慢。
本问题的最大坑点在于,下载预编译文件的进度不显示在命令行。

解决方案

1. 修改npm镜像

首先,你可以更换阿里镜像源,全局执行如下npm脚本再重新打包

npm config set ELECTRON_MIRROR http://npm.taobao.org/mirrors/electron/

2. 修改系统环境变量

由于未知原因,electron-packger / electron-builder 在真实打包时并不识别npm的镜像地址,此时,你需要修改环境变量
变量名:

ELECTRON_MIRROR

变量值:

http://npm.taobao.org/mirrors/electron/

electron | electron-packager打包问题汇总_第1张图片
然后,再重启cmd,使环境变量生效,进行打包即可。

Error: read ECONNRESET

npm超时,解决方法与上条相同。

你可能感兴趣的:(electron,Node)