37
votes
[~]# node node.js

Error: Cannot find module 'socket.io'

[~]# node -v
v0.10.10

socket.io installed:

npm install socket.io

npm WARN package.json policyfile@0.0.4 No repository field.
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
8
Do you have a package.json?WouterH
If you are using typescript make sure that the module is copied to the build destination folder.twboc

8 Answers

66
votes

Looks like you have installed socket.io in a different location to your current path. Either install globally like below:

npm install -g socket.io

Or reference the location you've installed to:

var io = require('../lib/socket.io');
13
votes

Thanks ajtrichards!

Just to add to the answer - in case you simple use

sudo npm install socket.io

The installation path will be

/home/.../.npm/socket.io

If you use sudo npm install -g socket.io

The installation path will be

/usr/local/lib/node_modules/socket.io

In first case, I tried adding the socket.io path in global path variable but it did not work.

5
votes

you might have installed but not added to the dependencies in package.json Use below command to install socket.io module

npm install socket.io --save

Hope this will resolve your problem..

4
votes

I had the same issue with version 0.12.0 on Windows. I tried npm install -g socket.io but that didn't change anything. Also tried npm cache clean also no change, but after npm update npm -g, things got well.

2
votes

This almost happens than you try to get socket.io in you html files like :

index.html

where you have:

 < script type="text/javascript" src="/socket.io/socket.io.js"></script>

It will not find socket.io because you did not started module in you application file wich contain the server like

server.js

You must include following lines after started your server in server.js :

var io = require('socket.io').listen(server);

Hope, will save time.

1
votes

I had this problem with NodeJs, Typescript and Socket.io 4. the error was:

TS2792: Cannot find module 'socket.io'.

So my fix was to update the tsconfig.json adding a new property (moduleResolution).

tsconfig.json:

{
  "compilerOptions": {
    ....
    "moduleResolution": "node",
  }
}
0
votes

I think that you have executed the command npm install socket.io in a different location and your files are in different directory.. So either run the command in the same directory which have your files or either mention the path where you have currently installed socket.io in your PATH variable.

0
votes

I had the same problem in mac... you can install the module with sudo npm install socket.io-client