为什么req.params中会包含脚本文件路径,该如何清除该多余参数?
问题根源
你观察到的两个参数值是两次不同请求触发的:
- 第一次是用户跳转操作触发的
/room/${roomID}页面请求,此时req.params.rid为预期的房间ID - 第二次是room.ejs中引用
this.js时使用了相对路径,浏览器会基于当前页面路径/room/xxx拼接出脚本请求地址/room/this.js,刚好匹配/room/:rid路由规则,此时req.params.rid的值为this.js
修复方案
任选一种即可:
- 修改script标签的src为绝对路径,避免路径拼接错误:
<script src="/this.js" defer></script>
- 给静态资源统一配置路由前缀,防止和业务路由冲突:
先在Express入口文件中修改静态资源配置:
// 假设你的静态资源都存放在public目录下 app.use('/static', express.static('public'))
再修改script标签的src路径:
<script src="/static/this.js" defer></script>
内容的提问来源于stack exchange,提问作者Noob Gaming
相关产品推荐
相关产品推荐

