好吧,我已经使用JavaScript来构建我的API很长一段时间了,我决定开始使用typescript,正如你所想象的,我一直在遇到错误。我有一个自定义的错误处理程序,当路由未找到时,如下所示。
import express, {Response, Request } from 'express'
const notFoundErrorHandler = (err: Error, req: Request, res: Response, next: NextFunction) => res.status(404).send('Route does not exist')
export = notFoundErrorHandler
字符串
这就是我的app.ts的样子:
import express from 'express'
import 'express-async-errors';
const app = express()
import notFoundErrorHandler = require('./middleware/not-found')
app.use(notFoundErrorHandler);
app.get('/hi', (req, res) => {
res.send('HIIIIIIII')
})
app.listen(process.env.PORT, () => {
console.log(`app is listening on port ${process.env.PORT}`)
})
型
上面的代码在JavaScript中工作,只要我导入'express-expressc-errors',但是在typescript中我一直得到这个错误:
No overload matches this call.
The last overload gave the following error.
Argument of type '(err: Error, req: Request, res: Response, next: NextFunction)' is not assignable to parameter of type 'PathParams'.
型
当我试图在控制台中运行'' npm i --save-dev @types/express-sourcec-errors ''时,我也得到了一个错误:
404 Not Found - GET https://registry.npmjs.org/@types%2fexpress-async-errors - Not found
'@types/express-async-errors@*' is not in this registry.
型
有没有人能告诉我出了什么问题,如何解决?
1条答案
按热度按时间2guxujil1#
您应该使用以下命令导入
notFoundErrorHandler
:字符串
express-tagc-errors
@types/express-async-errors
不存在-但是express-async-errors
可以处理typescript,如下所述:Not working with typescript型
中间件.ts
型
index.ts
型
结果
/hi
个Route does not exist
个