IO 未定义 - Socket.io
IO Is Not Defined - Socket.io
我目前正在开发一个实时聊天网页。我最初考虑使用 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);
});
server.js
const io = require("socket.io")(3000);
io.on("connection", (socket) => {
socket.emit("chat-message", "Hello World!");
});
基本上,现在它应该做的就是当用户连接到页面时,服务器向客户端发送一个带有Hello World!
的data
的请求。然后客户端只是console.log()
这个数据。
我在 BROWSER 控制台中收到 Uncaught ReferenceError: io is not defined
错误,它说问题出在第一行的 script.js
中:const socket = io("http://localhost:3000");
.
提前谢谢你。感谢您提供任何帮助。
socket.io <script>
标签有一个 defer
属性,这意味着它将在文档被解析后 运行。这意味着它在 script.js 之后 运行s,不会延迟。要解决此问题,只需将 defer
属性添加到 script.js <script>
标记,作为延迟脚本 运行 按照它们定义的顺序。
我目前正在开发一个实时聊天网页。我最初考虑使用 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);
});
server.js
const io = require("socket.io")(3000);
io.on("connection", (socket) => {
socket.emit("chat-message", "Hello World!");
});
基本上,现在它应该做的就是当用户连接到页面时,服务器向客户端发送一个带有Hello World!
的data
的请求。然后客户端只是console.log()
这个数据。
我在 BROWSER 控制台中收到 Uncaught ReferenceError: io is not defined
错误,它说问题出在第一行的 script.js
中:const socket = io("http://localhost:3000");
.
提前谢谢你。感谢您提供任何帮助。
socket.io <script>
标签有一个 defer
属性,这意味着它将在文档被解析后 运行。这意味着它在 script.js 之后 运行s,不会延迟。要解决此问题,只需将 defer
属性添加到 script.js <script>
标记,作为延迟脚本 运行 按照它们定义的顺序。