Nodejs AsyncLocalStorage getStore() return 未定义
Nodejs AsyncLocalStorage getStore() return undefined
我读了这个post AsyncLocalStorage for Easy Context Passing in Node.js
我尝试在我的日志中获取 logId,但我不能,因为 asyncLocalStorage.getStore()
return 未定义。
似乎上下文在 MyLogger class 中丢失了。
如何解决?
这是我的快递应用程序
const asyncLocalStorage = new AsyncLocalStorage();
app.use((req, res, next) => {
asyncLocalStorage.run(new Map(), () => {
asyncLocalStorage.getStore().set("requestId", uuid());
next();
});
});
module.exports.asyncLocalStorage = asyncLocalStorage;
这是 MyLogger class
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();
});
});
现在可以了)
我读了这个post AsyncLocalStorage for Easy Context Passing in Node.js
我尝试在我的日志中获取 logId,但我不能,因为 asyncLocalStorage.getStore()
return 未定义。
似乎上下文在 MyLogger class 中丢失了。
如何解决?
这是我的快递应用程序
const asyncLocalStorage = new AsyncLocalStorage();
app.use((req, res, next) => {
asyncLocalStorage.run(new Map(), () => {
asyncLocalStorage.getStore().set("requestId", uuid());
next();
});
});
module.exports.asyncLocalStorage = asyncLocalStorage;
这是 MyLogger class
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();
});
});
现在可以了)