【发布时间】:2021-06-09 04:31:00
【问题描述】:
嘿,所以我今天刚开始学习 node js,我正在使用 express 和 ejs,并尝试添加一个套接字 io 服务器/聊天,但我似乎无法弄清楚为什么我无法让它工作。
页面加载但未连接到套接字服务器。
server.js:
const express = require('express');
const expressLayouts = require('express-ejs-layouts');
const app = express();
// EJS
app.use(expressLayouts);
app.use(express.static("public"));
app.set('view engine', 'ejs');
// Routes
app.use('/', require('./routes/index.js'));
app.use('/chat', require('./routes/chat.js'));
app.use((req, res, next) => res.redirect('/'));
const listener = app.listen(process.env.PORT, () => {
console.log('Your app is listening on port ' + listener.address().port)
});
路由器/chat.js
const express = require('express');
const router = express.Router();
const server = require('http').createServer();
const io = require('socket.io')(server);
// Chat Page
router.get('/chat', (req, res) => {
res.render("chat/chat");
});
io.on('connection', function(socket) {
console.log('a user connected');
socket.on('chat message', function(msg) {
console.log('message: ' + msg);
});
});
module.exports = router;
views/chat/chat.ejs:
<form action="">
<input id="m" autocomplete="off" /><button>Send</button>
</form>
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
$(function () {
var socket = io();
$('form').submit(function(){
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
});
</script>
错误:
Uncaught ReferenceError: io is not defined
【问题讨论】:
-
控制台或节点控制台有错误吗?
-
是的,我在控制台中遇到错误 Uncaught ReferenceError: io is not defined
-
您是否已将 socket.io 安装到您的 node_modules 中?
npm install socket.io -
是的,我已经安装了socket.io
-
你的错误是客户端还是服务器端?
标签: javascript node.js sockets ejs