调用worker_threads时,电子应用程序崩溃

时间:2019-05-30 06:27:25

标签: javascript node.js electron web-worker worker

我使用electron-vue样板生成了电子应用程序。然后,我将其电子版本更改为4.2.1,该电子版本的节点版本为10.11.0

然后我尝试使用worker_threads模块。首先,我尝试这样:

const Worker = require('worker_threads');
new Worker('./workerDummy.js');

但是它说Worker不是构造函数,所以我用console.log记录它:

{ isMainThread: true,
MessagePort:
 { [Function: MessagePort]
   super_:
    { [Function: EventEmitter]
      EventEmitter: [Circular],
      usingDomains: false,
      defaultMaxListeners: [Getter/Setter],
      init: [Function],
      listenerCount: [Function] } },
MessageChannel: [Function: MessageChannel],
threadId: 0,
Worker: [Function: Worker],
parentPort: null }

NodeJS docs about worker_threads仅给出了new Worker(path)的示例,但我认为它是其他版本或其他版本,我应该使用Worker.Worker,因为我看到.Worker是一个函数。所以我将其更改为:

new Worker.Worker('./workerDummy.js');

现在应用程序崩溃了,没有任何错误信息。

我已经创建了demo repository。重现步骤:

在'@ / src / main / index.js'中创建NodeJS worker。


我以前在电子vue样板上遇到了一些问题(例如,我无法使其与最新的电子5.x一起使用),所以我想检查其他一些更“纯”的样板,例如电子伪CLI建议甚至在电子文档中使用。所以我用

生成了一个新项目
npm i -g @electron-forge/cli
electron-forge init with-forge-cli --template=webpack

它具有最新的电子版本5.0.2,该版本随附节点v12.x,因此可以。然后在main.js中添加

const { Worker, isMainThread, parentPort, workerData } = require('worker_threads');

及以下内容在app.on就绪:

app.on('ready', () => {
    createWindow();
    new Worker('./workerDummy.js');
});

行为是完全一样的,所以我怀疑是因为电子势力。

0 个答案:

没有答案