2014-02-06 42 views
0

我在node-webkit應用程序中加載節點模塊時遇到問題。例如(https://npmjs.org/package/usb)。如何在node-webkit應用程序中加載外部節點模塊

它從npm(npm install usb --save-dev)成功安裝並且在簡單的Node.js中工作,並且在之下成功重建,以便在node-webkit中使用。

我不包括在我的app.nwnode_modules文件夾,所以使用咕嚕建成後,我有文件的結構如下:

  • APP.EXE
  • nw.pak
  • ffmpegsumo.dll
  • icudt.dll
  • libEGL.dll
  • libGLESv2.dll
  • [node_modules]
    • [USB]
      • binding.gyp
      • 的package.json
      • ...
      • [建設]
        • [發行]
          • usb_bindings。節點
          • usb_bindings.lib
          • usb_bindings.bdb
          • usb_bindings.exp
          • [OBJ]
            • ...

當我嘗試加載在此模塊中我appliacation,使用下面的代碼:

var usb = require('usb'); 

我得到一個錯誤

Error: Cannot find module 'usb' 

爲什麼節點的WebKit無法加載這個模塊?

p.s.所有的默認模塊,例如pathurlhttp工作。

+0

你可能需要與節點打包模塊-webkit應用程序才能使用它們。 – Furzel

+0

是的,如果我將node_modules文件夾包含到app.nw中,它可以工作。但是這個決定增加了.exe文件的大小。我使用多個模塊,如果我包含所有模塊,我將獲得接近50MB的app.exe。 –

+0

如果大小是一個問題,您可以刪除包含的.dll的索姆姆。例如,ffmpegsumo.dll和libEGL * .dll不是強制性的。你會在這裏找到這裏的參考資料(https://github.com/rogerwang/node-webkit/wiki/How-to-package-and-distribute-your-apps)。 至於捆綁您的模塊與您的應用程序,我擔心沒有其他方式來做到這一點。 – Furzel

回答

0

您是否嘗試過使用模塊源代碼的絕對路徑?

例如(通常可以從GitHub或一個簡單的谷歌搜索獲得),如果你想從一個絕對路徑加載ADM-ZIP模塊:

var AdmZip = require(pathToModuleSource + "/adm-zip"); 
相關問題