具有USB模块的节点webkit应用程序失败

时间:2015-09-02 04:41:46

标签: javascript angularjs node.js node-webkit

我正在使用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"}

有人可以帮助我吗?

1 个答案:

答案 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_namemodule_path变量是必要的,因为无论出于何种原因,nw-gyp都没有从binding.gyp文件中获取值。

可能导致您所描述的错误的另一件事是将nw.exe重命名为其他内容。只要它被命名为nw.exe,符号就会正确绑定。