![](/img/trans.png)
[英]Electron: __ was compiled against a different version of Node.js
[英]Electron was compiled against a different Node.js version
我正在构建一个预期在 Ubuntu 20.xx Linux 和 Raspberry Pi(运行 Raspbian 和 arch=armv7l)上运行的 Electron 应用程序,并收到以下错误:
...was compiled against a different Node.js version using NODE_MODULE_VERSION 72.
This version of Node.js requires NODE_MODULE_VERSION 82.
我正在使用各种需要(node-gyp)编译为特定架构的本机模块,并且我使用 mocha 作为我的单元测试套件。
我通常在本地将 node 安装到给定的项目,这允许我将 node 和 npm 的版本锁定到项目需要的任何版本,而不必大惊小怪。
Electron Native Module Documentation指出我应该在收到此版本错误后运行electron-rebuild
。
不幸的是,这对我来说有两个问题:
每次在测试和应用程序之间来回切换时,我都需要重建所有本机二进制文件,这是不可接受的。
如果我曾经运行过npm rebuild
,那么下次运行electron-rebuild
成功退出而不重建任何东西(大概是由于无效的缓存命中)。
注意:为了解决 #2,我可以继续这个咒语:
rm -rf node_modules
npm install
electron-rebuild
在调查此错误时,我学到了一些东西:
神秘的 NODE_MODULE_VERSION 值(在这种情况下为 82 对 73)可以(表面上)在此处找到并与节点 semver 版本匹配: https ://nodejs.org/en/download/releases/
当前版本 Electron (v10.1.5) 的日志process.version
指示如下:
Launching Electron with:
{
node: '12.16.3',
v8: '8.5.210.26-electron.0',
uv: '1.34.2',
zlib: '1.2.11',
brotli: '1.0.7',
ares: '1.16.0',
modules: '82',
nghttp2: '1.41.0',
napi: '5',
llhttp: '2.0.4',
http_parser: '2.9.3',
openssl: '1.1.0',
icu: '67.1',
unicode: '13.0',
electron: '10.1.5',
chrome: '85.0.4183.121'
}
Failed at the lzma-native@6.0.1 install script
。总之,我想安装任何必要的东西,以便我的本地本地节点和 npm 二进制文件在 Electron 运行时和我的 shell 环境中兼容,并且无需重建即可在两者中工作。
啊,但如何?
更新:
FWIW,node-hid 已为较新版本的 node/Electron 重写,所以我现在正在运行 Electron v11.0.3 和 node-hid v2.0.0-0。
感谢Mark Lee对 Electron 的一些提示,我了解到我们可以像运行node
一样运行electron
(无需启动完整的 GUI 体验)。
这让我去寻找使用电子二进制而不是节点的 mocha 包装器,然后我找到了这个库: electron-mocha 。
一个npm install --save-dev electron-mocha
和electron-rebuild
之后,我在我的运行时环境旁边运行了一个来自单个 Makefile 的测试!
不幸的是,电子摩卡包装器似乎不支持摩卡的“观察”功能,但我通过使用when-changed
( link ) Python util 来实现这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.