gpt4 book ai didi

node.js - 声明合并不适用于 express 4.17.* 请求类型

转载 作者:行者123 更新时间:2023-12-05 02:05:49 33 4
gpt4 key购买 nike

我想为 Request 类型添加一个属性,所以我创建了一个文件夹 @types/express 并在此文件夹中添加了包含此内容的文件 index.d.ts。

namespace Express {
interface Request {
user: number;
}
}

在 VSCode 中,当我引用 req.user 时错误消失了,它甚至显示 usernumber 类型 screenshot that shows that "user" property on the "Request" object is treated right

但是当我启动服务器时,我看到这样的错误:

/home/myself/web/my-server/node_modules/ts-node/src/index.ts:434
return new TSError(diagnosticText, diagnosticCodes)
^
TSError: ⨯ Unable to compile TypeScript:
src/app.ts:46:7 - error TS2339: Property 'user' does not exist on type 'Request<ParamsDictionary, any, any, ParsedQs>'.

46 req.user;
~~~~

at createTSError (/home/myself/web/my-server/node_modules/ts-node/src/index.ts:434:12)
at reportTSError (/home/myself/web/my-server/node_modules/ts-node/src/index.ts:438:19)
at getOutput (/home/myself/web/my-server/node_modules/ts-node/src/index.ts:578:36)
at Object.compile (/home/myself/web/my-server/node_modules/ts-node/src/index.ts:775:32)
at Module.m._compile (/home/myself/web/my-server/node_modules/ts-node/src/index.ts:858:43)
at Module._extensions..js (internal/modules/cjs/loader.js:1220:10)
at Object.require.extensions.<computed> [as .ts] (/home/myself/web/my-server/node_modules/ts-node/src/index.ts:861:12)
at Module.load (internal/modules/cjs/loader.js:1049:32)
at Function.Module._load (internal/modules/cjs/loader.js:937:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)

如果有任何关于如何修复它的想法,我将不胜感激。

附注我对 express-session 模块做了同样的事情,并在 Session 接口(interface)中添加了一个 counter 属性,它完美地工作

最佳答案

@types/express安装( @types/express-session 也足够了),这应该可以工作:

index.d.ts:

declare module '@types/express-serve-static-core' {
interface Request {
user?: User
}
}

重要的是声明合并逻辑是 @types/express-serve-static-core 的一部分(参见 https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/express-serve-static-core/index.d.ts)。

关于node.js - 声明合并不适用于 express 4.17.* 请求类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63101393/

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