IO 未定义 - Socket.io

问题描述 投票:0回答:2

我目前正在开发一个实时聊天网页。我最初考虑使用 PHP,但正在测试后端的

socket.io

我遇到了浏览器控制台记录的问题

Uncaught ReferenceError: io is not defined
。我在这个网站以及其他网站上查过很多次,大多数答案都说要确保您的
<script>
标签有
src
指向
http://localhost:3000/socket.io/socket.io.js
而不仅仅是
/socket.io/socket.io.js
。我的 HTML 代码中已经有这个了。这是代码片段:

index.html

<!DOCTYPE html>
<html lang="en-us">

<head>
  <title>Chat</title>
  <meta charset="utf-8" />
  <link rel="stylesheet" href="style.css" type="text/css" />
  <script type="text/javascript" src="../libs/jquery.js"></script>
  <script src="../libs/fontawesome.js" crossorigin="anonymous"></script>
  <script defer src="http://localhost:3000/socket.io/socket.io.js"></script>
</head>

<body>
  <!-- My code here -->

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

</html>

script.js

const socket = io("http://localhost:3000");

socket.on("chat-message", (data) => {
  console.log(data);
});

服务器.js

const io = require("socket.io")(3000);

io.on("connection", (socket) => {
  socket.emit("chat-message", "Hello World!");
});

基本上,它现在要做的就是当用户连接到页面时,服务器向客户端发送带有

data
Hello World!
的请求。然后客户端只需
console.log()
此数据。

我在浏览器控制台中收到

Uncaught ReferenceError: io is not defined
错误,它表示问题出在第一行的
script.js
中:
const socket = io("http://localhost:3000");

提前谢谢您。感谢任何和所有的帮助。

javascript html server socket.io
2个回答
2
投票

socket.io

<script>
标签有一个
defer
属性,这意味着它将在解析文档后运行。这意味着它在 script.js 之后运行,不会被延迟。要解决此问题,只需向 script.js
defer
标记添加
<script>
属性,因为延迟脚本按照定义的顺序运行。


0
投票

只需删除 defer 属性,(Uncaught ReferenceError: io is not Defined) 的结果是未能使用正确的语法为 socket.io-client 正确定义脚本初始化。例如:

正确的语法,

语法错误, 1) 2) src="socket.io/socket.io.js"

© www.soinside.com 2019 - 2024. All rights reserved.