我一直在尝试在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
。不幸的是,没有运气。
谁能告诉我是什么引起了这个问题?
答案 0 :(得分:4)
如果没有任何源代码,很难给出一个好的答案。但是,您可以尝试执行此操作。
cd
进入项目文件夹。npm i --save socket.io
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,请尝试:
npm install -g node-gyp
这会将这行添加到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');