gpt4 book ai didi

node.js - Nodejs AsyncLocalStorage getStore() 返回未定义

转载 作者:行者123 更新时间:2023-12-04 08:45:54 28 4
gpt4 key购买 nike

我读了这篇文章 AsyncLocalStorage for Easy Context Passing in Node.js
我尝试在我的日志中获取 logId,但我不能,因为 asyncLocalStorage.getStore()返回未定义。
似乎上下文在 MyLogger 类中丢失了。
如何解决?
这是我的 express 应用程序

  const asyncLocalStorage = new AsyncLocalStorage();

app.use((req, res, next) => {
asyncLocalStorage.run(new Map(), () => {
asyncLocalStorage.getStore().set("requestId", uuid());
next();
});
});

module.exports.asyncLocalStorage = asyncLocalStorage;
这是 MyLogger 类
   static log(logId, className, text) {
const { asyncLocalStorage } = require("../server.js");
const store = asyncLocalStorage.getStore()
console.log(this._getBaseStaticLog(logId, logTypes.LOG, text, className));
}

最佳答案

我解决了这个问题。
问题是我因为 bodyparser 失去了上下文中间件。
我在设置上下文之前更改了该中间件,现在可以了。
曾是:

app.use((req, res, next) => {
asyncLocalStorage.run(new Map(), () => {
asyncLocalStorage.getStore().set("requestId", uuid());
next();
});
});

// body parser
app.use(
bodyParser.json({
limit: "10mb"
})
);
改变:
// body parser
app.use(
bodyParser.json({
limit: "10mb"
})
);

app.use((req, res, next) => {
asyncLocalStorage.run(new Map(), () => {
asyncLocalStorage.getStore().set("requestId", uuid());
next();
});
});
现在好了)

关于node.js - Nodejs AsyncLocalStorage getStore() 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64330910/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com