【问题标题】:cannot use native node module in electron-forge app无法在电子锻造应用程序中使用本机节点模块
【发布时间】:2021-08-21 17:52:18
【问题描述】:

我正在尝试在使用 webpack 模板通过 electron-forge 创建的电子应用程序中使用 pkcs11js

但我得到了错误

Error: C:\ws-p\electron-test\.webpack\main\349a63bd9833f80e7879a5bbfb2a4af2.node is not a valid Win32 application.
←[90m    at Object.Module._extensions..node (internal/modules/cjs/loader.js:1122:18)←[39m
←[90m    at Module.load (internal/modules/cjs/loader.js:928:32)←[39m
←[90m    at Function.Module._load (internal/modules/cjs/loader.js:769:14)←[39m
←[90m    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)←[39m
←[90m    at internal/main/run_main_module.js:17:47←[39m

周围有很多问题,但到目前为止,我提供的解决方案/答案都没有。

这些都没有解决:

  • 删除并重新安装 node_modules
  • 使用electron-rebuild(虽然electron-forge在内部使用这个)
  • 为包手动使用node-gyp rebuild --target=13.1.0 --arch=x64 --dist-url=https://electronjs.org/headers
  • electron docs 中定义的 Npm 步骤

环境

Windows 10 Pro
Node 14.16.1
electron: 13.1.0
electron-rebuild: 2.3.5
electron-forge: 6.0.0-beta.57
pkcs11js: 1.2.4

【问题讨论】:

    标签: node.js electron electron-forge


    【解决方案1】:

    你应该使用 Electron Forge Webpack template,它对原生模块有更好的支持。

    目前有一个open issue 用于此功能,这是由过时/未维护的@marshallofsound/webpack-asset-relocator-loader 引起的,该@marshallofsound/webpack-asset-relocator-loader 通过Webpack 满足本机模块的需求。我目前正在使用PR 来解决此问题,但与此同时您可以使用my updated fork

    【讨论】:

    • 感谢您的回答,我已经使用 webpack 模板和 @vercel/webpack-asset-relocator-loader。我已经用另一种方式解决了这个问题。我会发布答案
    • vercel插件目前只能在electron主进程中按预期工作
    • 感谢您的更新,我会记住这一点,因为现在我只在主进程中使用本机模块
    • 请注意,您不应在主进程中进行任何阻塞调用,因为这些阻塞渲染器进程和 GPU 进程之间的通信反过来会导致渲染“卡顿”。
    【解决方案2】:

    网络上的解决方案都不适合我。有效的方法是将electron-gyp 输出文件夹定义为electron-rebuild 之前的主目录,或者在依赖项安装之后/之前使用电子锻造。

    在终端中:

    窗户:

    set HOME=C:\Users\YourUser\.electron-gyp
    npm i
    npm run start <# which resolves to electron-forge start #> 
    

    Unix:

    $ export HOME=~/.electron-gyp
    $ npm i
    $ npm run start # which resolves to  electron-forge start
    

    希望对大家有所帮助

    【讨论】:

      猜你喜欢
      • 2020-06-07
      • 2017-12-11
      • 2018-03-10
      • 2017-07-01
      • 2018-05-16
      • 1970-01-01
      • 2017-12-27
      • 2020-03-13
      • 2019-08-13
      相关资源
      最近更新 更多