【发布时间】:2021-04-10 23:49:46
【问题描述】:
环境:
- 电子:v11.0.3
- 节点:v14.15.1
- 操作系统:win10 2020 x64
package.json - 构建
"build":{
"productName": "myapp",
"directories": {
"output": "build"
},
"files": [
"dist/electron/**/*"
]
}
Webpack.json
{
entry: {
main: path.join(__dirname, '../src/main/index.js')
},
externals: [
...Object.keys(dependencies || {})
],
module: {
rules: [
{
test: /\.js$/,
use: 'babel-loader',
exclude: /node_modules/
},
{
test: /\.node$/,
use: 'node-loader'
}
]
},
node: {
__dirname: process.env.NODE_ENV !== 'production',
__filename: process.env.NODE_ENV !== 'production'
},
output: {
filename: '[name].js',
libraryTarget: 'commonjs2',
path: path.join(__dirname, '../dist/electron')
},
plugins: [
new webpack.ExternalsPlugin("commonjs", ["node-hid"])
],
resolve: {
extensions: ['.js', '.json', '.node']
},
target: 'electron-main'
}
index.js
const { Worker } = require('worker_threads');
const worker = new Worker(`const HID = require("node-hid");console.log("hello");`, { eval:true });
worker.on('error', (err) => {
console.log('worker error:',err);
});
以上代码在开发环境中运行时可以正常输出“hello”,但是打包后运行时会输出如下错误:
worker error:
{code: "MODULE_NOT_FOUND", requireStack: ["C:\Users\user\AppData\Local\Programs\myapp\[worker eval]"]}
要不要使用asarUnpack相关配置?
【问题讨论】:
-
如果您可以将 webpack 和 electron-builder 配置添加到您的问题中,将会很有帮助
-
@Rhayene 谢谢你的建议,我已经添加了这些配置
-
我玩了一下——
worker_threads本身在构建后运行良好。但是在没有安装node-hid作为依赖项的情况下运行您的示例时,我遇到了同样的错误。它在安装node-hid作为依赖项(不是开发依赖项)后构建后工作。虽然我在关闭窗口后收到了Segmentation fault- 这很奇怪。在继续搜索之前,您可能需要检查是否忘记安装node-hid。 -
但是我没有使用 webpack 构建它 - 只是使用默认的 electron-builder 配置。如果您安装了
node-hid,将您的工作代码隔离到一个新的电子应用程序并仅使用电子构建器构建它以检查它是否有效可能会有所帮助。如果是,webpack 可能会做一些你不希望它做的事情。
标签: node.js webpack electron electron-builder