windows 下 electron 开发的一点“趣事”

windows 下 electron 开发的一点“趣事”

💡 原文中文,约1400字,阅读约需4分钟。
📝

内容提要

文章讲述在Windows下进行Electron开发时遇到的依赖管理问题:项目需要32位npm安装依赖,却要用64位运行,还需重新编译node-sass,每次安装新依赖都会出问题,重装麻烦。作者尝试改用nvm方案,但Windows不支持Linux的nvm,npm参数也无效,最终使用nvs,却因PowerShell安全策略需先设置执行策略,且每次打开终端都要重设。作者由此感叹需要深入了解命令行以及Windows与Linux的差异。

🔎

延伸解读

32位与64位混用的代价

文章中的项目需要32位npm安装依赖,却要用64位运行,这导致node-sass等原生模块必须重新编译。每次安装新依赖都可能破坏现有环境,作者不得不重装依赖。这种架构混用不仅增加操作步骤,还让依赖管理变得脆弱,任何新依赖都可能引入冲突,迫使开发者反复修复环境。

nvm方案在Windows的局限

作者尝试用nvm管理Node版本,但Windows不支持Linux的nvm。转而使用nvs后,又遇到PowerShell安全策略限制,需要先设置执行策略才能运行脚本,且每次打开终端都要重新设置。这反映出Windows与Linux在命令行工具和权限模型上的差异,增加了开发环境配置的复杂度。

npm参数调整的无效尝试

文章提到尝试用npm install --arch=ia32 electron或npm set npm_config_arch ia32来控制架构,但实测无效,且npm文档中并无这些参数。这说明仅靠npm参数无法解决项目整体架构区分问题,因为不止electron一个依赖需要区分架构,需要更系统的版本管理工具。

❓

Q&A

为什么在Windows下开发Electron项目需要同时使用32位和64位的Node?

因为项目立项用的是32位Electron,所以npm i时必须用32位Node;但运行时如果用32位,保存后热更新会报错(如内存不足),因此必须用64位运行npm run dev。

在Windows下用32位npm安装依赖后,运行前还需要做什么额外操作?

需要执行npm rebuild node-sass,因为32位node-sass在64位环境下不能直接使用。

为什么保留32位和64位两个Node安装包的方法最终行不通?

因为每npm i一个新依赖,项目就可能无法运行,可能是依赖的依赖产生冲突导致某些修改,不得不重装依赖,频繁出现很麻烦。

在Windows下尝试用npm参数指定32位架构为什么失败?

类似npm install --arch=ia32 electron的方法只能控制electron,但项目还有其他区分arch的依赖;而npm set npm_config_arch ia32和npm clean-install --arch=ia32实测无效,且npm文档中根本没有这些参数。

Windows下有哪些类似nvm的Node版本管理工具?作者最终用了哪个?

有nvs和nvm-windows两个替代方案,作者最终使用了nvs。

在Windows下使用nvs时遇到PowerShell无法运行的问题,如何解决?

需要先设置PowerShell执行策略:Set-ExecutionPolicy Unrestricted -Scope CurrentUser,才能运行脚本。

使用nvs切换Node版本后,每次打开终端需要注意什么?

每次打开终端都需要重新设置一次nvs。

🏷️

标签

➡️

继续阅读