在 Ubuntu 上构建 Electron 项目时的问题记录和解决方法
文章目录
- 0. 引言
- 1. 问题一:依赖安装缓慢
- 原因分析
- 解决方案
- 使用国内镜像源
- 使用 `nrm` 管理 npm 镜像源
- 2. 问题二:Electron 二进制文件下载缓慢
- 原因分析
- 解决方案
- 设置 Electron 下载的国内镜像源
- 通过 npm 配置 Electron 镜像
- 3. 问题三:`Cannot find module 'node:path'` 错误
- 原因分析
- 解决方案
- 检查 Node.js 版本
- 使用 nvm 升级 Node.js 版本
- 4. 问题四:`nvm install --lts` 下载速度慢
- 原因分析
- 解决方案
- 设置 nvm 使用国内镜像源
- 5. 问题五:构建脚本无法读取 Electron 版本
- 原因分析
- 解决方案
- 修改构建脚本 `build.js`
- 验证 `package.json` 文件
- 6. 问题六:下载必须的github包缓慢
- 在终端中设置 HTTP 和 HTTPS 代理
- 设置 SOCKS5 代理
- 验证代理设置是否生效
- 7. 总结
0. 引言
今天尝试自己编译Electron架构的NxShell,遇到了一些问题,对解决过程做了一些记录。
1. 问题一:依赖安装缓慢
在执行 npm install
时,发现安装过程非常缓慢,甚至出现卡顿的情况。
原因分析
- 网络问题:国内访问 npm 官方源可能速度较慢。
- npm 缓存或配置问题:可能存在缓存损坏或配置不当。
解决方案
使用国内镜像源
将 npm 的源替换为国内的淘宝镜像,可以显著提升下载速度。
npm config set registry https://registry.npmmirror.com/
验证是否设置成功:
npm config get registry
# 应输出 https://registry.npmmirror.com/
使用 nrm
管理 npm 镜像源
nrm
是一个 npm 源管理工具,方便地在不同的源之间切换。
安装 nrm
:
npm install -g nrm
查看可用的源:
nrm ls
切换到淘宝源:
nrm use taobao
2. 问题二:Electron 二进制文件下载缓慢
在安装 Electron 时,需要下载其二进制文件(如 .zip
文件),下载速度非常慢。
原因分析
- 下载源在国外:Electron 的二进制文件默认从 GitHub 下载,国内访问速度较慢。
解决方案
设置 Electron 下载的国内镜像源
通过设置 ELECTRON_MIRROR
环境变量,将下载源切换到淘宝镜像。
临时设置(仅当前会话有效):
export ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"
永久设置(添加到 ~/.bashrc
或 ~/.zshrc
):
echo 'export ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"' >> ~/.bashrc
source ~/.bashrc
通过 npm 配置 Electron 镜像
npm config set ELECTRON_MIRROR https://npmmirror.com/mirrors/electron/
3. 问题三:Cannot find module 'node:path'
错误
在运行构建脚本或安装依赖时,出现以下错误:
Error: Cannot find module 'node:path'
原因分析
- Node.js 版本过低:
'node:path'
模块在较新的 Node.js 版本中才可用,旧版本中应使用'path'
模块。
解决方案
检查 Node.js 版本
node -v
如果版本低于 16,建议升级。
使用 nvm 升级 Node.js 版本
安装 nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
source ~/.bashrc # 或 source ~/.zshrc
设置 nvm 使用淘宝镜像源:
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/
安装最新的 LTS 版本:
nvm install --lts
nvm use --lts
验证 Node.js 版本:
node -v
4. 问题四:nvm install --lts
下载速度慢
在使用 nvm 安装最新 LTS 版本的 Node.js 时,下载速度很慢。
原因分析
- nvm 默认从国外源下载,速度较慢。
解决方案
设置 nvm 使用国内镜像源
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/
重新运行安装命令:
nvm install --lts
5. 问题五:构建脚本无法读取 Electron 版本
在运行 node build.js
时,出现以下错误:
TypeError: Cannot read properties of undefined (reading 'electron')
原因分析
- 构建脚本未正确加载
package.json
:可能是路径问题导致无法正确加载。 - 读取
electron
版本的位置错误:electron
被定义在devDependencies
中,但脚本可能尝试从dependencies
中读取。
解决方案
修改构建脚本 build.js
确保正确加载 package.json
,并从 devDependencies
中读取 electron
版本。
const path = require('path');
const build_packages = require(path.join(__dirname, 'package.json'));
const electron_version = build_packages['devDependencies']['electron'];
console.log(`Electron version is ${electron_version}`);
这段代码使用 __dirname
确保脚本能够正确找到 package.json
。
验证 package.json
文件
确保 electron
在 devDependencies
中正确定义。
{
"devDependencies": {
"electron": "17.4.1"
}
}
6. 问题六:下载必须的github包缓慢
此时必须要网络加速了,但是我的Ubuntu 网络加速器默认是对终端不生效的,需要做如下配置(我使用的是clash)
方法如下:
在终端中设置 HTTP 和 HTTPS 代理
在终端中,使用 export
命令设置 http_proxy
和 https_proxy
环境变量:
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
这将告诉终端中的命令行程序使用指定的 HTTP 代理来进行网络请求。
设置 SOCKS5 代理
如果你想使用 SOCKS5 代理,可以设置 ALL_PROXY
环境变量:
export ALL_PROXY="socks5://127.0.0.1:7891"
请注意,有些程序可能不支持 SOCKS5 代理,或者需要额外的配置。
验证代理设置是否生效
你可以通过以下命令测试代理是否生效:
curl https://www.google.com -I
7. 总结
在 Ubuntu 上构建 Electron 项目时,可能会遇到以下问题:
- 依赖安装缓慢:使用国内镜像源(如淘宝镜像)加速 npm 和 Node.js 的下载。
- 模块无法找到:升级 Node.js 到最新的 LTS 版本,确保兼容性。
- 构建脚本错误:修改脚本以正确加载
package.json
,并从正确的位置读取依赖版本。