我在node-webkit應用程序中加載節點模塊時遇到問題。例如(https://npmjs.org/package/usb)。如何在node-webkit應用程序中加載外部節點模塊
它從npm(npm install usb --save-dev
)成功安裝並且在簡單的Node.js中工作,並且在之下成功重建,以便在node-webkit中使用。
我不包括在我的app.nw
node_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]
- ...
- [發行]
- [USB]
當我嘗試加載在此模塊中我appliacation,使用下面的代碼:
var usb = require('usb');
我得到一個錯誤
Error: Cannot find module 'usb'
爲什麼節點的WebKit無法加載這個模塊?
p.s.所有的默認模塊,例如path
,url
,http
工作。
你可能需要與節點打包模塊-webkit應用程序才能使用它們。 – Furzel
是的,如果我將node_modules文件夾包含到app.nw中,它可以工作。但是這個決定增加了.exe文件的大小。我使用多個模塊,如果我包含所有模塊,我將獲得接近50MB的app.exe。 –
如果大小是一個問題,您可以刪除包含的.dll的索姆姆。例如,ffmpegsumo.dll和libEGL * .dll不是強制性的。你會在這裏找到這裏的參考資料(https://github.com/rogerwang/node-webkit/wiki/How-to-package-and-distribute-your-apps)。 至於捆綁您的模塊與您的應用程序,我擔心沒有其他方式來做到這一點。 – Furzel