【问题标题】:Error: Cannot find module 'socket.io'错误:找不到模块“socket.io”
【发布时间】:2023-04-03 09:36:01
【问题描述】:
[~]# 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 吗?
  • 如果您使用的是打字稿,请确保将模块复制到构建目标文件夹。

标签: node.js socket.io


【解决方案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 安装模块

          【讨论】:

            猜你喜欢
            • 2012-04-10
            • 1970-01-01
            • 2017-08-29
            • 2017-01-06
            • 2014-05-13
            • 2014-07-02
            • 2021-02-16
            • 2014-11-02
            相关资源
            最近更新 更多