故事一:从git上拉下代码安装依赖后发现需要升级node 版本,由14升到16,但有其他项目仍然依赖版本14,因此需要安装nvm进行不同版本的环境管理。这里的失误主要是没有在安装nvm之前将已安装node删除,直接安装了nvm,node14可能删除不干净
问题1:nvm安装node.js 16后按理说应该同时安装了npm和node,但运行命令npm却报错找不到该命令zsh: command not found: npm
解决方式:
通过访问下面的网址找到对应的npm版本
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!