41
[~]# 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 [email protected] No repository field.
npm WARN package.json [email protected] 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
2
  • 1
    Do you have a package.json? Commented Jun 13, 2013 at 14:42
  • If you are using typescript make sure that the module is copied to the build destination folder. Commented May 23, 2020 at 10:27

10 Answers 10

66

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');
Sign up to request clarification or add additional context in comments.

3 Comments

var io = require('/root/node_modules/socket.io/lib/socket.io'); var express = require('/usr/local/lib/node_modules/express/lib/express.js');
@ajtrichards - for me this does not work when I run node from crontab, at least on reboot. If I would add full path to require() function I believe it would work then
dont forget to npm init
13

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.

Comments

7

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..

Comments

6

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",
  }
}

Comments

4

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.

1 Comment

That didn't really sort it for me on windows also but thanks for the suggestion!
2

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.

Comments

2

I fixed it by adding "moduleResolution": "node" in tsconfig.json(which was inspired by the discussion above) and then restart my VScode. Hope this will help others.

Comments

0

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.

2 Comments

Please put some more context into your answer
@AlecHenderson_v1.00 Basically I am saying that; you might have a directory say "ABC" where you have your node.exe files and npm.cmd (if you are using windows operating system) so there you would also be having a node_modules folder so you have to make sure that whenever you install any module you first change directory in cmd and reach there i.e. in "ABC". Also make sure that you have the path of "ABC" mentioned in PATH variable.
0

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

Comments

0

Please check all your js file wherever you mentioned or called socket.io where in in my case it was a spelling mistake sokcet.io that I corrected and start working.

1 Comment

This does not really answer the question. If you have a different question, you can ask it by clicking Ask Question. To get notified when this question gets new answers, you can follow this question. Once you have enough reputation, you can also add a bounty to draw more attention to this question. - From Review

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.