mac打包electron应用问题记录

630 阅读2分钟

故事一:从git上拉下代码安装依赖后发现需要升级node 版本,由14升到16,但有其他项目仍然依赖版本14,因此需要安装nvm进行不同版本的环境管理。这里的失误主要是没有在安装nvm之前将已安装node删除,直接安装了nvm,node14可能删除不干净

问题1:nvm安装node.js 16后按理说应该同时安装了npm和node,但运行命令npm却报错找不到该命令zsh: command not found: npm

解决方式: 通过访问下面的网址找到对应的npm版本 image.png node对应历史版本:[nodejs.org/en/about/pr…]

故事二:node环境配置好后,安装依赖,但通过npm安装却一直报错,经排查是electron的相关依赖下载不下来,需要换源,可以通过命令export ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/再次运行npm i,或者通过cnpm进行安装。

问题2:安装好依赖后,使用electron-builder打包时,报错Error: Exit code: ENOENT. spawn /usr/bin/python ENOENT,发现是mac系统升级后将原本自带的python2环境去掉了,而electron的运行打包需要依赖python

解决:安装python2.7,执行python --version,找不到后进行安装,通过which python查看python安装位置进行环境变量的配置。

pyhton2.7下载地址:[www.python.org/ftp/python/…]

环境参考:

  • macOS Monterey 12.6.3
  • Python 2.7.18
  • electron 13.6.9
  • electron-builder version=22.14.13 os=21.6.0

问题3:安装好python后依然报错Error: Exit code: ENOENT. spawn /usr/bin/python ENOENT,主要是因为当前使用electron-builder版本,有写死的/usr/bin/python,而在新的mac系统版本中找不到python2,只有/usr/bin/python3

解决:找到报错的文件路径:/node_modules/dmg-builder/out/dmg.js,搜索process.env.PYTHON_PATH,将/usr/bin/python替换为/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7,也可以选择升级electron-builder版本

修改后的代码:

    await builder_util_1.exec(process.env.PYTHON_PATH || "/Library/Frameworks/Python.framework/Versions/2.7/bin/python", [path.join(dmgUtil_1.getDmgVendorPath(), "dmgbuild/core.py")], {
        cwd: dmgUtil_1.getDmgVendorPath(),
        env,
    });

撒花,打包成功了DONE Build complete!