【问题标题】:How to install node-hid for electron如何为电子安装 node-hid
【发布时间】:2020-12-03 20:50:02
【问题描述】:

我正在尝试运行一个与 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.js electron


    【解决方案1】:

    问题已解决,所以我将其标记为已回答。我想我仍然想了解更多关于 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

    之后,它就可以工作了。 关于为什么会有不同的行为有什么见解吗?

    【讨论】:

    • 不同行为的原因是,在第一种情况下,您使用的是 npm 的重建脚本,即docs.npmjs.com/cli/v6/commands/npm-rebuild,在第二种情况下,您告诉 npm 使用您定义的脚本中名为“rebuild”的脚本。底线是这两个命令运行不同的脚本,只有第二个运行您定义的脚本。希望这会有所帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 2019-12-27
    • 2013-04-23
    • 1970-01-01
    • 2020-01-16
    • 2011-10-26
    • 1970-01-01
    相关资源
    最近更新 更多