我正在使用node-webkit编写桌面应用程序。我已经使用Node USB模块编写了脚本,如果我使用node运行该脚本,该模块工作正常。它列出了所有USB设备,连接,读取和写入。现在我想使用node-webkit应用程序实现相同的功能,其中HTML有一个按钮,我们必须在这些按钮上执行这些操作。现在我们需要配置节点模块。我已将该模块添加到我的项目中,然后按照提到的进行处理
package.json
:
{
"name": "node-webkit-angular-bootstrap-starter",
"version": "0.0.1",
"description": "Starter destkop app using node-webkit, html5, angular, and bootstrap",
"main": "app/index.html",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "MIT",
"window": {
"title": "node-webkit-angular-bootstrap-starter",
"toolbar": true,
"frame": true,
"width": 1024,
"height": 768,
"position": "center"
},
"dependencies" : {
"node-pre-gyp": "0.6.9"
},
"bundledDependencies":["node-pre-gyp"],
"devDependencies": {
"aws-sdk": "~2.0.0-rc.15"
},
"scripts": {
"install": "node-pre-gyp install --fallback-to-build"
},
"binary": {
"module_name": "usb",
"module_path": "./app/lib/binding/",
"host": "https://github.com/camsoupa/node-usb"
}
}
Home.js
:
(function () { 'use strict'; app.controller('homeController', function ($scope) {alert("Heelooooo");
var gui = require('nw.gui');
var os = require('os');
$scope.settings = [];
$scope.usb = require('usb'); });})();
我使用nw
运行应用程序时出现以下错误"%1 is not a valid Win32 application. ↵D:\Projects\…er\node_modules\usb\src\binding\usb_bindings.node"}
有人可以帮助我吗?
答案 0 :(得分:0)
我通过编译正确的架构来解决这个问题。在我的环境中,节点是32位,而nw是64位。将目录更改为usb模块,以下两个命令通过创建64位版本的本机绑定解决了该问题:
nw-gyp configure --target=0.12.3 --module_name=usb_bindings --module_path=..\src\binding\ --target_arch=x64
nw-gyp build --target=0.12.3 --module_name=usb_bindings --module_path=..\src\binding\ --target_arch=x64
module_name
和module_path
变量是必要的,因为无论出于何种原因,nw-gyp
都没有从binding.gyp
文件中获取值。
可能导致您所描述的错误的另一件事是将nw.exe
重命名为其他内容。只要它被命名为nw.exe
,符号就会正确绑定。