gpt4 book ai didi

node.js - Electron Forge v6、Keytar 和 Node 加载器错误 "no suitable image found... file too short"

转载 作者:行者123 更新时间:2023-12-03 12:27:17 25 4
gpt4 key购买 nike

我在获取 Keytar 时遇到了一些问题在 Electron Forge v6 项目 (beta.54) 中工作的包。

在新生成的项目中,我在运行应用程序时收到有关“文件太短”的错误。以下是源自主进程的错误对话框的摘录:

> electron-forge start

✔ Checking your system
✔ Locating Application
✔ Preparing native dependencies: 1 / 1
✔ Compiling Main Process Code
✔ Launch Dev Servers
✔ Compiling Preload Scripts
✔ Launching Application


Webpack Output Available: http://localhost:9000

App threw an error during load
Error: node-loader:
Error: dlopen(/Users/abc/Desktop/app2/.webpack/main/9e6f9bf6669542cb15efba32c033f3de.node, 1): no suitable image found. Did find:
/Users/abc/Desktop/app2/.webpack/main/9e6f9bf6669542cb15efba32c033f3de.node: file too short
/Users/abc/Desktop/app2/.webpack/main/9e6f9bf6669542cb15efba32c033f3de.node: file too short
at Object.<anonymous> (/Users/abc/Desktop/app2/.webpack/main/index.js:1015:9)
at Object../node_modules/keytar/build/Release/keytar.node (/Users/abc/Desktop/app2/.webpack/main/index.js:1018:30)
at __webpack_require__ (/Users/abc/Desktop/app2/.webpack/main/index.js:21:30)
at Object../node_modules/keytar/lib/keytar.js (/Users/abc/Desktop/app2/.webpack/main/index.js:1029:14)
at __webpack_require__ (/Users/abc/Desktop/app2/.webpack/main/index.js:21:30)
at Object../src/index.ts (/Users/abc/Desktop/app2/.webpack/main/index.js:1440:14)
at __webpack_require__ (/Users/abc/Desktop/app2/.webpack/main/index.js:21:30)
at /Users/abc/Desktop/app2/.webpack/main/index.js:85:18
at Object.<anonymous> (/Users/abc/Desktop/app2/.webpack/main/index.js:88:10)
at Module._compile (internal/modules/cjs/loader.js:1152:30)

node-loader 似乎对这个包有问题。我无法破译发生了什么,因为我可以看到包 .node 文件被复制到 ./webpack/main/native_modules 中,但是根目录下有一个散列文件名似乎导入了 native 文件。

确实注意到一件奇怪的事情是 .webpack/main/9e6f9bf6669542cb15efba32c033f3de.node 的散列文件包含以下内容而不是 native 二进制数据:

module.exports = __non_webpack_require__("./native_modules/build/Release/keytar.node")

随后...这些 .node 文件 /native_modules/build/Release/keytar.node 是我所期望的。

应该如何进行?在弄清楚问题出处之前,我并没有急于在 GitHub 上打开问题。

我觉得在根本上,.node 文件是如何在 keytar 中生成的,但谁知道 Webpack 和装载机。

重现步骤

  1. 创建一个新的 Electron Forge 项目 `npx create-electron-app app2 --template=typescript-webpack
  2. 安装 Keytar npm install keytar
  3. const key tar = require('keytar'); 添加到 src/index.ts
  4. 通过 npm run start 运行应用程序
  5. 体验错误

版本

Node :v14.14.0
NPM:v7.0.13

打包JSON依赖:

"devDependencies": {
"@electron-forge/cli": "^6.0.0-beta.54",
"@electron-forge/maker-deb": "^6.0.0-beta.54",
"@electron-forge/maker-rpm": "^6.0.0-beta.54",
"@electron-forge/maker-squirrel": "^6.0.0-beta.54",
"@electron-forge/maker-zip": "^6.0.0-beta.54",
"@electron-forge/plugin-webpack": "6.0.0-beta.54",
"@marshallofsound/webpack-asset-relocator-loader": "^0.5.0",
"@typescript-eslint/eslint-plugin": "^4.0.1",
"@typescript-eslint/parser": "^4.0.1",
"css-loader": "^4.2.1",
"electron": "11.0.3",
"eslint": "^7.6.0",
"eslint-plugin-import": "^2.20.0",
"fork-ts-checker-webpack-plugin": "^5.0.14",
"node-loader": "^1.0.1",
"style-loader": "^1.2.1",
"ts-loader": "^8.0.2",
"typescript": "^4.0.2"
},
"dependencies": {
"electron-squirrel-startup": "^1.0.0",
"keytar": "^7.2.0"
}

最佳答案

我几乎完全复制了 native 模块加载的这个问题,唯一的区别是在我的情况下,模块是在本地构建并作为项目的一部分安装的。

webpack 对 native 模块的支持在这个配置中有问题并导致了这个问题。对我来说,诀窍是在 webpack.rules.js 中删除 webpack 中的 node-loader,即删除此部分:

-  // Add support for native node modules
- {
- test: /\.node$/,
- use: 'node-loader',
- },

我从 electron-forge 的问题跟踪器中找到了这个解决方案和关于该主题的进一步讨论:https://github.com/electron-userland/electron-forge/issues/1688

关于node.js - Electron Forge v6、Keytar 和 Node 加载器错误 "no suitable image found... file too short",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65164434/

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