加载资源失败:服务器响应路由状态为 404(未找到)

时间:2021-06-27 22:50:13

标签: express routes ejs

我正在尝试在我的项目中进行路由。我希望在点击连接按钮时,房间页面应该被渲染。主页工作正常,但只要我点击连接,它就会显示无法获取 /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

1 个答案:

答案 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,以防您需要它(部分路由参数)。