节点 express 引用错误响应未定义

Posted

技术标签:

【中文标题】节点 express 引用错误响应未定义【英文标题】:Node express references error response is not defined 【发布时间】:2021-06-05 09:57:27 【问题描述】: var _expressPackage = 要求(“快递”); var _bodyParserPackage = require("body-parser"); var _sqlPackage = 要求(“mssql”); //使用 express web 框架初始化应用程序 var app = _expressPackage(); //以json格式解析结果 app.use(_bodyParserPackage.json()); ***//这里我们要开启CORS,这样我们就可以跨域访问api了*** app.use(function (req, res, next) res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, contentType,Content- 类型, 接受、授权”); 下一个(); ); ***//让我们现在设置我们的本地服务器。*** var server = app.listen(process.env.PORT || 4000, function () var port = server.address().port; console.log("App 正在端口上运行", port); ); ***//设置你的sql连接字符串,我这里用的是我自己的,你要替换成你的 自己的。*** var dbConfig = 用户:“sa1”, 密码:“12345”, 服务器:“本地主机”, 数据库:“test123” ; ***//连接数据库并执行查询的函数*** var QueryToExecuteInDatabase = 函数(响应,strQuery) ***//在创建连接之前关闭sql连接,否则会报错 连接已存在。*** _sqlPackage.close(); //现在连接你的sql连接 _sqlPackage.connect(dbConfig, function (error) 如果(错误) console.log("连接数据库时出错:-" + error); response.send(错误); 别的 ***//让我们为sql对象创建一个请求*** var request = new _sqlPackage.Request(); //查询在我们的数据库中运行 request.query(strQuery, function (error, responseResult) 如果(错误) console.log("连接数据库时出错:-" + error); response.send(错误); 别的 response.send(responseResult); ); ); ***//获取API*** app.get("/StudentList", function(_req ,_res) var Sqlquery = "select * from student1"; ***//tbl_studentdetails*** QueryToExecuteInDatabase(_res, Sqlquery); ); ***//调用存储过程*** var request = new _sqlPackage.Request(); ***//调用存储过程*** request.input('用户名', _sqlPackage.VarChar(50), 'admin'); request.input('密码', _sqlPackage.VarChar(50), 'admin@123'); request.execute('sp_CheckLogin', function (err, recordsets, returnValue) response.send(记录集); ); > (D:\performalytic\9999.practice\angularpra\NodeApiWithSql\node_modules\mssql\lib\tedious\request.js:701:23) 在 processImmediate (internal/timers.js:463:21) - 结束 sn-p -->

【问题讨论】:

【参考方案1】:

这个问题可以更清楚一点...但是由于提供的信息有限,您在这里遇到的问题似乎与词法范围有关。

词法作用域最简单地与当前执行上下文可以访问的变量有关。在函数内部,您可以访问在函数中声明的变量......或在周围的代码中。被剪断的代码的最后一行显示了一个***变量 request 以及该对象上的一个名为 execute 的方法。

您传递给execute 方法的回调具有三个变量(函数参数),您分别命名为errrecordsetsreturnValue。然而,在该函数体内,您正试图访问一个名为 response 的变量。如果我们查看周围的代码......没有声明response 变量。 (我看到的唯一名为 response 的变量在 QueryToExecuteInDatabase 内,因此只能在该函数体内访问。

你从哪里得到这个模板代码?

【讨论】:

以上是关于节点 express 引用错误响应未定义的主要内容,如果未能解决你的问题,请参考以下文章

req.user 未定义 - 节点 + 快递 + 护照-facebook

使用快速会话的套接字 IO - socket.request.res 未定义

Express 错误中的数据库查询:Router.use() 需要中间件函数但未定义

编译错误 未定义的引用 怎么回事

错误: - 未定义引用 `_imp__GetStockObject@4' 和未定义引用 `_imp__SetBkMode@8'

结果:ReferenceError:未定义响应