PatrickJS/angular-websocket

Error: Cannot find module 'bufferutil' during browserify

carn1x opened this issue · 10 comments

npm list:

├─┬ angular-websocket@2.0.1
│ └─┬ ws@1.1.1
│   ├── options@0.0.6
│   └── ultron@1.0.2

App.js

(function() {
  var angular_websocket;

  angular_websocket = require('angular-websocket');

}).call(this);

Command browserify app.js -o bundle.js gives:

Error: Cannot find module 'bufferutil' from '/www/node_modules/angular-websocket/node_modules/ws/lib'
    at /usr/lib/node_modules/browserify/node_modules/resolve/lib/async.js:46:17
    at process (/usr/lib/node_modules/browserify/node_modules/resolve/lib/async.js:173:43)
    at ondir (/usr/lib/node_modules/browserify/node_modules/resolve/lib/async.js:188:17)
    at load (/usr/lib/node_modules/browserify/node_modules/resolve/lib/async.js:69:43)
    at onex (/usr/lib/node_modules/browserify/node_modules/resolve/lib/async.js:92:31)
    at /usr/lib/node_modules/browserify/node_modules/resolve/lib/async.js:22:47
    at FSReqWrap.oncomplete (fs.js:82:15)

Fixed with npm install bufferutil utf-8-validate, and I suspect this issue is probably not within the scope of angular-websockets to fix. Should these actually be dependencies of ws or does it make sense for these to be dependencies of this project directly?

nope, I think this is somewhere within this module: webpack doesnt work as well.
some code has changed so it tries to load to much it seems :-(

I vote for bufferutil and utf-8-validate being added as dependencies of angular-websocket. Is there a reason the author didn't do this?

This was handled in fdfea1f

Don't you need this in production? (was added to devDependencies)

any insights here? i believe @odedniv is right..

I've not needed to install those dependencies, because anyway when I running the node.js server, it throw an error in socket.io, so what I've done is exclude those dependencies bufferutil and utf-8-validate when run browserify on the terminal or as statement so this way -u bufferutil -u utf-8-validate.

belfz commented

I'm facing similar problem (with webpack):

WARNING in ./~/ws/lib/Validation.js
Module not found: Error: Cannot resolve module 'utf-8-validate' in /Users/marcin/projects/front-end/node_modules/ws/lib
 @ ./~/ws/lib/Validation.js 12:16-41

WARNING in ./~/ws/lib/BufferUtil.js
Module not found: Error: Cannot resolve module 'bufferutil' in /Users/marcin/projects/front-end/node_modules/ws/lib
 @ ./~/ws/lib/BufferUtil.js 12:15-36

ERROR in ./~/ws/lib/WebSocketServer.js
Module not found: Error: Cannot resolve module 'tls' in /Users/marcin/projects/front-end/node_modules/ws/lib
 @ ./~/ws/lib/WebSocketServer.js 15:10-24

ERROR in ./~/options/lib/options.js
Module not found: Error: Cannot resolve module 'fs' in /Users/marcin/projects/front-end/node_modules/options/lib
 @ ./~/options/lib/options.js 6:9-22

Drive by comment, I came across this same error when including ws in the client side. It's actually not needed on the client side and browsers should use the native WebSocket constructor. See this issue for more information: websockets/ws#423

If your client is in browser you can use my fork to resolve this issue.
npm i jacek-jaskolski/angular-websocket --save