为什么为什么不断收到“找不到模块'socket.io'”?

时间:2018-08-06 15:37:41

标签: javascript node.js socket.io

我一直在尝试在NodeJS脚本中使用socket.io,但是我不断收到错误消息“找不到模块'socket.io'”。

完整错误:

$ sudo node /var/www/apache/server/serverScript.js
module.js:549
    throw err;
    ^

Error: Cannot find module 'socket.io'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/var/www/apache/server/serverScript.js:59:12)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)

我尝试在全球范围内安装socket.io,更新了npm相关的所有内容,并尝试了我在网上找到的所有其他常见建议,但错误没有改变。

如果我不得不猜测,我认为它与package.json文件有关。我刚开始使用NodeJS,却从未使用过package.json文件。我看到有人提到它是修复程序,所以我在npm init中添加了一个。这将其放在/home/pi中。由于此操作无济于事,因此将文件移至js文件位置:/var/www/apache/server。不幸的是,没有运气。

谁能告诉我是什么引起了这个问题?

3 个答案:

答案 0 :(得分:4)

如果没有任何源代码,很难给出一个好的答案。但是,您可以尝试执行此操作。

  1. 打开您的cmd或终端。
  2. cd进入项目文件夹。
  3. 运行命令:npm i --save socket.io
  4. 在源代码中,键入const io = require('socket.io');以导入socket.io。

答案 1 :(得分:0)

您是否已将此代码放在渲染文档的底部(例如,如index.html)?

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io();
</script>

您可以仅在项目内部安装套接字IO,而不能全局安装。

答案 2 :(得分:0)

如果使用NodeJS开发,则需要将包库添加到package.json中。可以这样做:

npm install --save socket.io

注意:如果您的npm安装无法安装socket.io,请尝试:

  • 全局安装node-gyp:npm install -g node-gyp
  • 使用以下内容创建一个.npmrc文件:@types:registry = https://registry.npmjs.org/

这会将这行添加到package.json:

"dependencies": {
    "debug": "~3.1.0",
    ...    
    "socket.io-adapter": "~1.1.0",
    "socket.io-client": "2.1.1",
    "socket.io-parser": "~3.2.0"
},

注意:点是其中可能存在的其他软件包库。

然后,您可以在代码中使用它:

const io = require('socket.io');