Typescript 无法识别扩展的express请求对象

Typescript 无法识别扩展的express请求对象,typescript,Typescript,我在TypeScript(3.8.3)中创建了一个全局express请求错误处理程序 从“express”导入express 从“http问题详细信息”导入{ProblemDocument} 常量registerExpressProblemJsonResponse=():void=>{ express.response.httpProblemJSON=函数(problemDocument):void{//第5行 this.set('Content-Type','application/probl

我在TypeScript(3.8.3)中创建了一个全局express请求错误处理程序

从“express”导入express
从“http问题详细信息”导入{ProblemDocument}
常量registerExpressProblemJsonResponse=():void=>{
express.response.httpProblemJSON=函数(problemDocument):void{//第5行
this.set('Content-Type','application/problem+json')
此.status(problemDocument.status)
此。发送(问题文档)
}
}
导出{registerExpressProblemJsonResponse}
从“express”导入{NextFunction,Request,Response}
const GlobalRequestErrorHandler=(记录器:any)=>{
返回(
错误:错误,
请求:,
res:答复,
下一步:NextFunction
):void=>{
logger.error(`${req.method}${req.url}错误:${err}`,{error:err})
如果(!res.headersSent){
返回res.httpProblemJSON(//第25行
新问题文档({状态:500,类型:'https://tempuri.org/error' })
)
}否则{
logger.warn(
`[global request error handler]${req.method}${req.url}具有返回响应的错误路径`
)
}
}
}
导出{GlobalRequestErrorHandler}
我扩展了express请求对象(
src/types/types.d.ts
):

从“http问题详细信息”导入{ProblemDocument}
声明命名空间表达式{
导出接口响应{
httpProblemJSON(problemDocument:problemDocument):无效
}
}
这是我的
tsconfig.json

{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "declaration": true,
    "target": "es6",
    "moduleResolution": "node",
    "sourceMap": true,
    "outDir": "dist",
    "baseUrl": ".",
    "paths": {
      "*": ["node_modules/*", "src/types/*"]
    }
  },
  "include": ["src/**/*"]
}
我安装了
“@types/express”:“^4.17.3”
“express”:“^4.17.1”

运行
tsc
时,会出现以下错误:


src/index.ts:5:20-错误TS2339:类型“Response”上不存在属性“httpProblemJSON”

您对Express的声明错误

它应该是这样的:

声明全局{
名称空间表达式{
界面响应{
httpProblemJSON(problemDocument:problemDocument):无效
}
}
}

请提供回购协议。这真的很奇怪,因为它在我的项目中工作。我更新了我的问题,并在最后添加了一个链接。明白了!我犯了错误,我们都没抓住。它输入了Request,而您使用的是Response:)
tsc
可以很好地处理您的repo中的这个更改:)错误现在确实消失了。我注意到了两件有趣的事情:在测试文件VS代码中仍然显示错误,如果我使用mocha+ts node using而不是jest,那么测试现在会由于编译器错误而失败。承诺使用摩卡咖啡:奇怪。Webstorm也显示了一个错误,但是Jest测试运行时没有任何问题!