"错误:找不到模块"当使用browserify将socket.io依赖项与--node标志捆绑在一起时

时间:2015-05-27 06:56:00

标签: node.js socket.io browserify

我试图使用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标志,它也可以正常工作。

"失踪"当我用

检查目录时,模块似乎在那里
ls node_modules/socket.io/node_modules/engine.io/node_modules/ws/build/Release/

我看到了

.deps/           bufferutil.node* linker.lock      obj.target/      validation.node*

一些谷歌搜索引导我进入https://github.com/websockets/ws/issues/25。但这似乎是指ws的旧版本。模块中ws的版本已超出此范围,我也已尝试按建议从源重建节点,但无济于事。

知道什么可能导致此错误吗?

1 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,我首先使用bufferutil然后使用utf-8-validate发生错误,但根据此Readme.md,您需要将其作为--save的要求安装}选项。希望这可以帮助。

  

有两个可选模块可以与ws模块一起安装。这些模块是二进制插件,可以改进某些操作,但由于它们是二进制插件,因此需要编译,如果主机系统上没有安装c ++编译器,则编译失败。

     
      
  • npm install --save bufferutil:改进了内部缓冲区操作,可以更快地处理屏蔽的WebSocket帧和一般缓冲区操作。

  •   
  • npm install --save utf-8-validate:规范要求验证无效的UTF-8字符,其中一些验证无法在JavaScript中完成,因此需要二进制插件。在大多数情况下,您已经验证了出于安全目的而收到的输入,从而导致双重验证。但是如果你想要100%符合规范并且快速验证UTF-8,那么这个模块是必须的。

  •   
相关问题