错误:找不到模块“socket.io”

Posted

技术标签:

【中文标题】错误:找不到模块“socket.io”【英文标题】:Error: Cannot find module 'socket.io' 【发布时间】:2013-06-08 03:22:08 【问题描述】:
[~]# node node.js

Error: Cannot find module 'socket.io'

[~]# node -v
v0.10.10

socket.io 已安装:

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

【问题讨论】:

你有 package.json 吗? 如果您使用的是打字稿,请确保将模块复制到构建目标文件夹。 【参考方案1】:

看起来您已将socket.io 安装在与当前路径不同的位置。像下面这样全局安装:

npm install -g socket.io

或参考您安装到的位置:

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

【讨论】:

var io = require('/root/node_modules/socket.io/lib/socket.io'); var express = require('/usr/local/lib/node_modules/express/lib/express.js'); @ajtrichards - 对我来说,当我从 crontab 运行节点时,这不起作用,至少在重新启动时。如果我要为 require() 函数添加完整路径,我相信它会起作用 别忘了 npm init【参考方案2】:

感谢ajtrichards!

只是为了添加答案-以防您简单使用

sudo npm install socket.io

安装路径为

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

如果你使用 sudo npm install -g socket.io

安装路径为

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

在第一种情况下,我尝试在全局路径变量中添加 socket.io 路径,但没有成功。

【讨论】:

【参考方案3】:

您可能已安装但未添加到 package.json 中的依赖项 使用以下命令安装socket.io 模块

npm install socket.io --save

希望这能解决您的问题..

【讨论】:

【参考方案4】:

我在 Windows 上使用 0.12.0 版时遇到了同样的问题。我试过 npm install -g socket.io 但这并没有改变任何东西。也试过npm cache clean也没有什么变化,但是在npm update npm -g之后,一切都好了。

【讨论】:

这并没有真正为我在 Windows 上排序,但感谢您的建议!【参考方案5】:

这几乎发生在您尝试在 html 文件中获取 socket.io 时,例如:

index.html

你在哪里:

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

它不会找到 socket.io 因为你没有在你的应用程序文件中启动模块,它包含像

这样的服务器

server.js

server.js 中启动服务器后,您必须包含以下行:

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

希望,会节省时间。

【讨论】:

【参考方案6】:

我在使用 NodeJs、Typescript 和 Socket.io 4 时遇到了这个问题。错误是:

TS2792: Cannot find module 'socket.io'.

所以我的解决方法是更新 tsconfig.json 添加一个新属性 (moduleResolution)。

tsconfig.json:


  "compilerOptions": 
    ....
    "moduleResolution": "node",
  

【讨论】:

【参考方案7】:

我认为你已经执行了命令npm install socket.io 在不同的位置,您的文件在不同的目录中.. 因此,要么在包含文件的同一目录中运行命令,要么在 PATH 变量中提及当前安装 socket.io 的路径。

【讨论】:

请在您的回答中添加更多上下文 @AlecHenderson_v1.00 基本上我是这么说的;你可能有一个目录说“ABC”,你有你的 node.exe 文件和 npm.cmd(如果你使用的是 Windows 操作系统),所以你也有一个 node_modules 文件夹,所以你必须确保无论何时安装您首先在 cmd 中更改目录并到达那里的任何模块,即在“ABC”中。还要确保你有 PATH 变量中提到的“ABC”的路径。【参考方案8】:

我在 mac 中遇到了同样的问题...您可以使用 sudo npm install socket.io-client 安装模块

【讨论】:

以上是关于错误:找不到模块“socket.io”的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2:错误 TS2307:找不到模块“socket.io-client”

找不到模块 socket.io

错误:找不到模块'socket.io-client / dist / socket.io.min.js'

Heroku 说:找不到模块'socket.io'

找不到 socket.io.js [重复]

由于以下错误,无法运行任何 npm 命令 - 错误:找不到模块“semver”