如何解决类型错误:res.set 不是函数
var shortid = require("shortid");
// To generate a unique ID,use shortid.generate()
module.exports = (req,res,next) => {
req.trace = {
id: shortid.generate(),path: "/tasks",timestamp: new Date().getTime(),};
res.headers = {};
res.headers["x-request-id"] = req.trace.id;
// NOT WORKING IDK WHY
//res.set("x-request-id",req.trace.id);
next();
};
问题
TypeError: res.set is not a function
调用于
app.use("/omega",middleware,omegaRouter);
解决方法
在 Express 代码中,res.set()
和 res.header()
是彼此的别名:
res.set =
res.header = function header(field,val) {
if (arguments.length === 2) {
var value = Array.isArray(val)
? val.map(String)
: String(val);
....
正如您在 Express source code 中看到的那样。
当您的代码执行此操作时:
res.headers = {};
您正在覆盖并弄乱 Express 方法。如果去掉这两行代码:
res.headers = {};
res.headers["x-request-id"] = req.trace.id;
那么,你的这一行:
res.set("x-request-id",req.trace.id);
应该可以正常工作。
不清楚您试图对访问 res.headers
的两行代码做什么,因为它应该是一种方法,而不是您可以设置的属性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。