【发布时间】:2014-03-03 17:08:28
【问题描述】:
我在 node-webkit 应用程序中加载节点模块时遇到问题。
例如模块usb (https://npmjs.org/package/usb)。
它已从 npm (npm install usb --save-dev) 成功安装并在简单的 Node.js 中运行,也已由 nw-gyp 成功重建以在 node-webkit 中使用。
我的app.nw 中没有包含node_modules 文件夹,因此使用grunt 构建后,我的文件结构如下:
- app.exe
- nw.pak
- ffmpegsumo.dll
- icudt.dll
- libEGL.dll
- libGLESv2.dll
- [节点模块]
- [USB]
- binding.gyp
- package.json
- ...
- [构建]
- [发布]
- usb_bindings.node
- usb_bindings.lib
- usb_bindings.bdb
- usb_bindings.exp
- [物件]
- ...
- [发布]
- [USB]
当我尝试在我的应用程序中加载此模块时,使用以下代码:
var usb = require('usb');
我收到一个错误
Error: Cannot find module 'usb'
为什么 node-webkit 不能加载这个模块?
附言path、url、http 等所有默认模块都有效。
【问题讨论】:
-
您可能需要使用 node-webkit 应用程序打包您的模块才能使用它们。
-
是的,如果我将 node_modules 文件夹包含到 app.nw 中,它就可以工作。但是这个决定增加了 .exe 文件的大小。我使用了多个模块,如果我包含所有模块,我将获得接近 50MB 的 app.exe。
-
如果大小是一个问题,您可能可以删除一些您包含的 .dll。例如,ffmpegsumo.dll 和 libEGL*.dll 不是强制性的。您将找到此here 的参考资料。至于将您的模块与您的应用程序捆绑在一起,我担心没有其他方法可以做到这一点。
标签: javascript node.js usb libusb node-webkit