在 Ubuntu 上构建 Electron 项目时的问题记录和解决方法

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 文件

确保 electrondevDependencies 中正确定义。

{
  "devDependencies": {
    "electron": "17.4.1"
  }
}

6. 问题六:下载必须的github包缓慢

此时必须要网络加速了,但是我的Ubuntu 网络加速器默认是对终端不生效的,需要做如下配置(我使用的是clash)
方法如下:

在终端中设置 HTTP 和 HTTPS 代理

在终端中,使用 export 命令设置 http_proxyhttps_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,并从正确的位置读取依赖版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘色的喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值