gpt4 book ai didi

node.js - Electron 是针对不同的 Node.js 版本编译的

转载 作者:行者123 更新时间:2023-12-03 12:22:06 24 4
gpt4 key购买 nike

我正在构建一个预计将在 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)编译为特定架构的各种 native 模块,并且我使用 mocha 作为我的单元测试套件。
我通常将 node 本地安装到给定的项目中,这样我就可以将 node 和 npm 的版本锁定到项目需要的任何版本,而不会大惊小怪。
Electron Native Module Documentation表示我应该运行 electron-rebuild收到此版本错误后。
不幸的是,这对我来说有两个问题:
  • 每次在测试和应用程序之间来回切换时,我都需要重建所有 native 二进制文件,这是 Not Acceptable 。
  • 如果我曾经运行 npm rebuild ,下一次运行 electron-rebuild成功退出而不重建任何东西(可能是由于无效的缓存命中)。

  • 注意 :要解决#2,我可以继续使用这个咒语:
    rm -rf node_modules
    npm install
    electron-rebuild
    在调查此错误时,我学到了一些东西:
  • 可以(表面上)在此处找到神秘的 NODE_MODULE_VERSION 值(在这种情况下为 82 vs 73)并将其与 Node semver 版本匹配:https://nodejs.org/en/download/releases/
  • 记录 process.version对于当前版本的 Electron (v10.1.5) 表示以下内容:
  • 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'
    }
  • release info for Node version 12.16.3 (我已安装)指示 NODE_MODULE_VERSION 72,而不是 82。
  • NODE_MODULE_VERSION 82 未出现在 any node releases 中(我看到)。
  • Electron Native Module Docs还表明如果我设置了相对较大的环境变量集合来构建二进制文件,我可以直接使用 npm。当我尝试这样做时,构建失败,Failed at the lzma-native@6.0.1 install script .

  • 总之,我想安装任何必要的东西,以便我的本地 native Node 和 npm 二进制文件在 Electron 运行时和我的 shell 环境中兼容,并且可以在两者中工作而无需重新构建。
    啊,但是怎么做?
    更新:
    FWIW,node-hid 已针对较新版本的 node/Electron 进行了重写,因此我现在正在运行 Electron v11.0.3 和 node-hid v2.0.0-0。

    最佳答案

    感谢 Mark Lee 的一些提示通过 Electron,我了解到我们可以运行 electron就像我们运行 node (不启动完整的 GUI 体验)。
    这让我去寻找一个使用 Electron 二进制而不是 Node 的 mocha package 器,然后我找到了这个库:electron-mocha .
    一个npm install --save-dev electron-mochaelectron-rebuild稍后,我可以通过一个 Makefile 在我的运行时环境旁边运行测试!
    不幸的是, Electron Mocha package 似乎不支持 Mocha 的“ watch ”功能,但我通过使用 when-changed 得到了它。 ( link ) Python 工具。

    关于node.js - Electron 是针对不同的 Node.js 版本编译的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64719704/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com