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

确保 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,并从正确的位置读取依赖版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/54876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【 EXCEL 数据处理 】000003 案列 标记涨跌,保姆级教程。使用的软件是微软的Excel操作的。处理数据的目的是让数据更直观的显示出来,方便查看。

【 EXCEL 数据处理 】000003 案列 使用条件格式之大于和小于,标记涨跌,保姆级教程。使用的软件是微软的Excel操作的。处理数据的目的是让数据更直观的显示出来,方便查看。 📚一、直接上案例 📖1.使用条件格式之大于和小…

ElasticSearch安装分词器与整合SpringBoot

ElasticSearch安装分词器与整合SpringBoot 如果还没安装的点击安装ElasticSearch查看怎么安装 分词器 1.分词器 在Elasticsearch中,分词器(Tokenizer)是分析器(Analyzer)的一部分,它的主要职责是将文本输入…

宝塔面板部署雷池社区版教程

宝塔面板部署雷池社区版教程 简单介绍一下宝塔面板,安全高效的服务器运维面板,使用宝塔面板的人非常多 在网站管理上,许多用户都是通过宝塔面板进行管理,宝塔面板的Nginx默认监听端口为80和443,这就导致共存部署时雷池…

K8s Calico替换为Cilium,以及安装Cilium过程(鲁莽版)

迁移CNI插件的3种办法: 1、创建一个新的集群,通过Gitops的方式迁移负载,然而,这可能涉及大量的准备工作和潜在的中断。 2、另一种方法是重新配置/etc/cni/net.d/指向Cilium。但是,现有的pod仍将由旧的…

【锁住精华】MySQL锁机制全攻略:从行锁到表锁,共享锁到排他锁,悲观锁到乐观锁

MySQL有哪些锁 1、按照锁的粒度划分 行锁 是最低粒度的的锁,锁住指定行的数据,加锁的开销较大,加锁较慢,可能会出现死锁的情况,锁的竞争度会较低,并发度相对较高。但是如果where条件里的字段没有加索引&…

Python | Leetcode Python题解之第432题全O(1)的数据结构

题目: 题解: class Node:def __init__(self, key"", count0):self.prev Noneself.next Noneself.keys {key}self.count countdef insert(self, node: Node) -> Node: # 在 self 后插入 nodenode.prev selfnode.next self.nextnode.…

解决Android中使用jdk 9以上中的某个类(AbstractProcessor)但是无法导入的问题

前景提要 今天在使用jdk中的AbstractProcessor类的时候,怎么都找不到,网上各种搜索,加什么依赖都没用,看了下依赖确实有这个类但是就是无法正常导入 然后翻了下android.jar,发现没有这个类 疑问 但是你尝试一下发…

Linux学习之路 -- 线程 -- 条件变量与生产消费模型

前面我们已经提过线程互斥的相关概念&#xff0c;但是我们在前文的抢票逻辑中&#xff0c;我们其实很容易发现一个问题。那就是票可能被一直被一个人抢&#xff0c;这里我们就需要引入条件变量的概念。 目录 1、条件变量 <1>线程同步 <2>相关概念 <3>相…

YOLO格式数据集转为COCO数据集(简单粗暴)

最近需要用的coco格式的数据集&#xff0c;但是在网上找的很多 毕竟麻烦&#xff0c;简单记录一下&#xff01; 1、调整目录结构&#xff08;以GC10-DET数据集为例&#xff09; YOLO格式数据集目录结构如下&#xff1a; 简单来说就是images文件夹里面有train、val、test三个文…

rk3588s android12 自启动 C程序

首先是 拷贝 TEST程序 到android跟文件系统看看能否成功。 首先将需要 在android 系统中 启动的 TEST 程序,拷贝到虚拟机。 这个程序 然后需要拷贝到 android 的文件系统中。 我是这样做的。 改的是这个文件。 然后, 编译+烧写测试。 发现, 在android 系…

国内车市销量激增,理想成功超越BBA

文/王俣祺 导语&#xff1a;随着“金九银十”的到来&#xff0c;国内汽车市场迎来了一个充满活力的开局。乘用车市场的销量已经迎来新的突破&#xff0c;彰显出中国汽车市场的韧性和潜力。尤为引人注目的是&#xff0c;新能源汽车销量同样激增&#xff0c;成为推动市场增长的重…

字节豆包C++一面-面经总结

talk is cheap show me the code lc206&#xff1a;链表反转&#xff1a;给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 class Solution { public:ListNode* reverseList(ListNode* head) {if(headnullptr||!head->next)return head…

RHCSA认证-Linux(RHel9)-Linux入门

文章目录 概要一、创建、查看和编辑⽂本1.1 输出重定向1.2 vim编辑器1.3 shell 变量1.5 获取帮助 二、管理本地用户和组2.1 描述用户2.2 切换用户和赋权2.3 用户管理2.4 用户组管理2.5 密码策略 三、控制文件访问3.1 列出文件和文件权限3.2 更改文件权限和拥有者3.3 控制默认权…

Node.js官网无法正常访问时安装NodeJS的方法

目录 一、使用 nvm 进行安装二、通过阿里云开源镜像站进行安装 一、使用 nvm 进行安装 此时如果直接使用 nvm install 命令进行安装会报错&#xff1a; nvm install 16.14.0Could not retrieve https://nodejs.org/dist/latest/SHASUMS256.txt. Get “https://nodejs.org/dis…

STM32精确控制步进电机

目的&#xff1a;学习使用STM32电机驱动器步进电机&#xff0c;进行电机运动精确控制。 测试环境&#xff1a; MCU主控芯片STM32F103RCT6 &#xff1b;A4988步进电机驱动器模块&#xff1b; 微型2相4线步…

AMP网站如何适配提升SEO效果?

AMP网站如何适配提升SEO效果&#xff1f; 很多网站本来就有了 PC 和 M 站&#xff0c;现在多来了个 AMP&#xff0c;如何适配提升网站SEO效果呢&#xff1f;有两种适配形式&#xff1a; 1.PC AMP 这种形式比较简单&#xff0c;只需要配置好 amphtml 和 canonical 即可。关系…

论文阅读《Co-clustering for Federated Recommender System》

论文概况 本文是2024 WWW的一篇联邦推荐论文&#xff0c;提出了一个基于特定类别物品相似度来进行聚类的联邦推荐框架。 Introduction 分析了经典聚类技术KMeans在联邦推荐设置中的不足&#xff0c;提出了一种新的共聚类联邦推荐机制CoFedRec&#xff0c;该机制在每个通信回合…

堆排序算法详解:原理与Python实现

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

后端回写前端日期格式化

问题 不进行格式化处理&#xff0c;就会导致传递的字符串很奇怪 解决方案 注解&#xff08;字段&#xff09; <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.2</…

【unity进阶知识1】最详细的单例模式的设计和应用,继承和不继承MonoBehaviour的单例模式,及泛型单例基类的编写

文章目录 前言一、不使用单例二、普通单例模式1、单例模式介绍实现步骤&#xff1a;单例模式分为饿汉式和懒汉式两种。 2、不继承MonoBehaviour的单例模式2.1、基本实现2.2、防止外部实例化对象2.3、最终代码 3、继承MonoBehaviour的单例模式3.1、基本实现3.2、自动创建和挂载单…