首页 > 解决方案 > 如何为电子安装 node-hid

问题描述

我正在尝试运行一个与 HID 设备交互的简单电子应用程序。我遇到了很多困难,我能够安装和运行node-hid,只是不在电子中。

我的 package.json 看起来像这样:

{
    "name": "test-proj",
    "version": "1.0.0",
    "description": "",
    "main": "main.js",
    "scripts": {
        "start": "electron .",
        "rebuild": "electron-rebuild --force",
        "postinstall": "electron-rebuild"
    },
    "author": "me",
    "license": "ISC",
    "devDependencies": {
        "electron": "^9.2.0",
        "electron-rebuild": "^1.11.0"
    },
    "dependencies": {
        "node-hid": "^1.3.0"
    }
}

我的 main.js 有标准的电子演示样板代码以及一些 HID 调用:

const {app, BrowserWindow, ipcMain} = require('electron');
var HID = require('node-hid');
var device = new HID.HID(5824, 1500);
// Standard electron app window stuff

尝试运行该应用程序时,我立即收到错误消息new HID.HID()

Error: Module did not self-register: '\\?\C:\Users\Nathan\Desktop\carriage_return_app\node_modules\node-hid\build\Release\HID.node'.
    at process.func [as dlopen] (electron/js2c/asar.js:140:31)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:1034:18)
    at Object.func [as .node] (electron/js2c/asar.js:140:31)
    at Module.load (internal/modules/cjs/loader.js:815:32)
    at Module._load (internal/modules/cjs/loader.js:727:14)
    at Function.Module._load (electron/js2c/asar.js:769:28)
    at Module.require (internal/modules/cjs/loader.js:852:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at bindings (C:\Users\Nathan\Desktop\carriage_return_app\node_modules\bindings\bindings.js:112:48)
    at loadBinding (C:\Users\Nathan\Desktop\carriage_return_app\node_modules\node-hid\nodehid.js:25:42)

环顾四周,我看到了一些如何安装 node-hid 并在电子中使用它的示例,但没有一个对我有帮助。

我在这里遵循了电子重建说明:https ://www.electronjs.org/docs/tutorial/using-native-node-modules

我也按照说明从这里复制了示例:https ://github.com/node-hid/node-hid#electron-projects-using-node-hid

没运气。我module did not self-register每次都得到。node-hid 应该支持电子,我没有看到其他人抱怨。有人遇到过这个问题或有解决问题的想法吗?

标签: node.jselectron

解决方案


问题已解决,所以我将其标记为已回答。我想我仍然想要更多关于 WHY 的信息。

提示来自构建两个示例项目:

运行第一个项目,electron-hid-test工作顺利。添加electron-builder为依赖项并添加"postinstall": "electron-builder install-app-deps"为脚本解决了我项目中的问题,我还不想要electron-builder,但至少它表明 node-hid 可以在给定特定设置的情况下与电子一起使用。

第二项也有效,但不适用于:

  1. npm install
  2. npm rebuild
  3. npm start

相反,特别需要将run命令添加到重建命令:

  1. npm install
  2. npm run rebuild
  3. npm start

之后,它的工作原理。关于为什么这种行为不同的任何见解?


推荐阅读