在 electron 中要求 node-opcua 冻结 electron 实例

Require node-opcua in electron freezes the electron instance

当 index.html 中需要 node-opcua 时,Electron 冻结,一个名为 Electron Helper 的进程占用了 100% 的 cpu。

我在 macOS 10.14.2 上遇到过这个问题,但是一个朋友在 Windows 10 上测试过并且有效。

来自 package.json

"devDependencies": {
    "electron": "^4.0.4"
},
"dependencies": {
    "node-opcua": "^0.5.6"
}

Main.js

const { app, BrowserWindow } = require('electron')

function createWindow () {
  // Create the browser window.
  win = new BrowserWindow({ width: 800, height: 600 })

  // and load the index.html of the app.
  win.loadFile('index.html')

  win.webContents.openDevTools()
}

app.on('ready', createWindow)

Index.html

<script>
// Does not work
const opcua = require('node-opcua')
console.log(opcua)

// Works
// const fs = require('fs')
// console.log(fs)
</script>

当运行 简单代码时,它应该只在控制台中打印 opcua 对象。但是整个电子过程冻结了。

通过更新 node-opcua 到 2.1.9 和 electron 到 6.0.11 解决了这个问题