You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用req.query.id时触发Uncaught ReferenceError: req未定义错误求助

问题描述

开发基于Express与MongoDB的联系人列表应用时,点击删除按钮期望获取联系人ID以执行数据库删除操作,但浏览器控制台抛出Uncaught ReferenceError: req is not defined错误,该错误在使用req.query.id时触发。

错误分析与修复方案

1. 前端删除链接参数格式错误

在home.ejs中,删除按钮的URL参数写法错误,缺少参数赋值的等于号,导致后端无法正确获取ID:

错误代码

<a href="/delete-contact/?id<%= i._id%>">
    <i class="fas fa-window-close"></i>
</a>

修复代码

<a href="/delete-contact?id=<%= i._id%>">
    <i class="fas fa-window-close"></i>
</a>

修改后,后端req.query.id就能正确获取到联系人的_id值,执行删除操作。

2. 前端代码误用后端req对象

Uncaught ReferenceError: req is not defined是浏览器前端的错误,说明你在前端JS文件(比如home.js)中错误使用了仅存在于Express后端的req对象。req是服务器端处理请求时的专属对象,前端环境不存在这个变量。

如果需要在前端获取URL参数,应使用前端原生方式解析,示例如下:

// 前端解析URL参数的工具函数
function getQueryParam(name) {
    const urlParams = new URLSearchParams(window.location.search);
    return urlParams.get(name);
}

// 调用示例:获取删除操作的contact id
const contactId = getQueryParam('id');

3. 后端删除逻辑验证

你的index.js中的删除路由逻辑是正确的,确认修改前端链接后,后端能正常接收到id参数,并通过Contact.findByIdAndDelete(id)完成数据库删除操作。

验证步骤
  1. 保存修改后的home.ejs文件
  2. 重启Express服务器
  3. 点击删除按钮,检查浏览器控制台是否消除错误,同时验证数据库是否成功删除对应联系人

内容的提问来源于stack exchange,提问作者Krish yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:15:09