当使用browserify将一个socket.io依赖项与–node标志绑定在一起时,“Error:Can not find module”
我试图使用browserify捆绑我的服务器端代码到一个单一的JS文件。 因此,我正在运行
browserify --node -t coffeeify source/server.js.coffee -o deployment/server.js
但是我收到以下错误
Error: Cannot find module '../build/Release/bufferutil' from '/My/Project/Path/node_modules/socket.io/node_modules/engine.io/node_modules/ws/lib'
唯一的违规行似乎是require "socket.io"
。 当我删除它捆绑工作正常。 它也工作正常,如果我删除--node
标志。
当我检查目录时,“missing”模块似乎在那里
ls node_modules/socket.io/node_modules/engine.io/node_modules/ws/build/Release/
我懂了
.deps/ bufferutil.node* linker.lock obj.target/ validation.node*
一些谷歌search引导我到这个https://github.com/websockets/ws/issues/25 。 但是这似乎是指旧版本的ws
。 模块中的ws
版本已经超越了这个版本,而且我也已经尝试过从源代码重build节点,但无济于事。
任何想法什么可能仍然是造成这个错误?
我遇到了同样的问题,我先用bufferutil
然后用utf-8-validate
,但是根据这个Readme.md ,你需要用--save
选项来安装它们。 希望这可以帮助。
有两个可选模块可以与ws模块一起安装。 这些模块是改进某些操作的二进制插件,但由于它们是二进制插件,因此如果在主机系统上未安装c ++编译器,则需要进行编译,否则可能会失败。
npm install --save bufferutil
:改进内部缓冲区操作,可以更快地处理被掩码的WebSocket帧和一般的缓冲区操作。
npm install --save utf-8-validate
:规范要求validation无效的UTF-8字符,其中一些validation无法在JavaScript中完成,因此需要二进制插件。 在大多数情况下,您将已经validation您为了安全目的而收到的input,从而导致双重validation。 但是,如果你想100%符合规范,并有UTF-8的快速validation,那么这个模块是必须的。
- 直接在node.js中使用browserify输出包
- 我可以在浏览器/ node.js上使用不同的库,而无需编辑package.json?
- Node.js browserify慢:没有办法来caching大型图书馆?
- Browserify:使用'package.json'中的'browser'字段replaceNPM模块的本地文件
- browserify'错误:找不到模块'试图修复'未捕获的参考错误:需求未定义'
- 与browserify gulp:找不到模块src / js / main.js
- 试图捆绑许多js文件时,Browserify无法find模块
- 添加bootstrap.js到browserify?
- browserify如何使Node.js模块在浏览器中工作?