如何在node-webkit应用程序中加载外部节点模块

时间:2014-02-06 16:17:48

标签: javascript node.js usb libusb node-webkit

我在node-webkit应用程序中加载节点模块时遇到问题。

例如模块usbhttps://npmjs.org/package/usb)。

它已从npm(npm install usb --save-dev)成功安装并在简单的Node.js中运行,nw-gyp已成功重建,以便在node-webkit中使用。

我的node_modules中没有包含app.nw文件夹,因此在使用grunt构建后,我有以下文件结构:

  • APP.EXE
  • nw.pak
  • ffmpegsumo.dll
  • icudt.dll
  • libEGL.dll
  • libGLESv2.dll
  • [node_modules]
    • [USB]
      • binding.gyp
      • 的package.json
      • ...
      • [构建]
        • [发布]
          • usb_bindings.node
          • usb_bindings.lib
          • usb_bindings.bdb
          • usb_bindings.exp
          • [OBJ]
            • ...

当我尝试在我的应用程序中加载此模块时,使用以下代码:

var usb = require('usb');

我收到错误

Error: Cannot find module 'usb'

为什么node-webkit无法加载此模块?

P.S。所有默认模块(如pathurlhttp都可以使用。

3 个答案:

答案 0 :(得分:0)

就我而言,问题有两个原因:

  1. 如果我想使用在C ++上编写的节点模块,我无法为我的应用程序自定义名称(在我的情况下' app'),我应该使用默认名称' NW&#39 ;. https://github.com/rogerwang/node-webkit/wiki/Using-Node-modules#3rd-party-modules-with-cc-addons

  2. 据我所知,无法将模块从外部文件夹“node_modules”中加载到appliacation中。使用功能'要求'

答案 1 :(得分:0)

您是否尝试过使用模块源代码的绝对路径? (通常可以从GitHub或简单的谷歌搜索获得)

例如,如果要从绝对路径加载adm-zip模块:

var AdmZip = require(pathToModuleSource + "/adm-zip");

答案 2 :(得分:0)

将权限添加到package.json

    "permissions": [
        "usb",
    ],

https://developer.chrome.com/apps/declare_permissions#usb