我正在尝试在我的项目中进行路由。我希望在点击连接按钮时,房间页面应该被渲染。主页工作正常,但只要我点击连接,它就会显示无法获取 /rooms/0b2636b5-c254-47f4-ade8-9e6b745a96d1。当代码不是路由到房间而是在 root 上时,代码工作正常网址。
我是 Web 开发的新手,我尝试阅读有关类似问题的其他问题,但无法理解。
服务器端(Server.js):
const express = require('express');
const app = express();
const server = require('http').Server(app);
const { v4: uuidV4 } = require('uuid');
const io = require('socket.io')(server);
const { ExpressPeerServer } = require('peer');
const peerServer = ExpressPeerServer(server, {
debug: true
});
app.use('/peerjs', peerServer);
app.set('view engine', 'ejs');
app.use(express.static('public'));
app.get('/', (req, res) => {
res.render('home');
})
app.get('/rooms', (req, res) => {
res.redirect(`/rooms/${uuidV4()}`);
})
app.get('/rooms:room', (req, res) => {
res.render('room', { roomId: req.params.room })
})
server.listen(3000);
客户端(script.js)
const socket = io('/rooms');
const videoGrid = document.getElementById('video-grid');
var peer = new Peer(undefined, {
path: '/peerjs',
host: '/rooms',
port: '3000'
})
home.ejs 上的导航栏
<nav class="nav">
<li class="nav-link">
<a href="/rooms">Connect</a>
</nav>
room.ejs
<script>
const ROOM_ID = "<%=roomId%>"
</script>
<script src="/socket.io/socket.io.js" defer ></script>
<script src="script.js" defer></script>
文件结构
公开
-script.js
意见
-home.ejs
-room.ejs
server.js
答案 0 :(得分:0)
你真的很接近它,在这个块中只有 1 个错误:
app.get('/rooms:room', (req, res) => {
res.render('room', { roomId: req.params.room })
})
应该是:
app.get('/rooms/:room', (req, res) => {
res.render('room', { roomId: req.params.room })
})
Express 文档页面 here,以防您需要它(部分路由参数)。