typescript - 打字稿错误:“元素隐式具有'任何'类型,因为类型'错误'没有索引签名”
问题描述
代码在这里:
app.use((req: express.Request,
res: express.Response, next: express.NextFunction) => {
let err = new Error('Not Found');
err['status'] = 404;
next(err);
});
错误在这里:
src/server.ts(23,3): error TS7017: Element implicitly has an 'any' type because type 'Error' has no index signature.
由于 Error 是默认的全局类型,我不知道如何处理该错误。
解决方案
Typescript 将 Error 视为 any 并且您正在尝试传递索引。试试这个,
app.use((req: express.Request, res: express.Response, next: Function) => {
let err: any = new Error('Not Found');
err.status = 404;
next(err);
});
let error = new ectrl.ErrorController();
app.use('*', error.errorAction);
return app;
}
你的 ectrl 在哪里
export module Controller {
export class ErrorController extends ctrl.Controller {
constructor() {
super();
}
errorAction(err: any, req: Request, res: Response, next: Function) {
let data = {
message: err.message,
error: err,
title: err.message,
layout: path.join(__dirname, '..', 'views', 'layouts', 'layout.hbs')
};
res.status(err.status || 500);
res.render('error/error', data);
}
}
}
推荐阅读
- c# - 如何将标签控件保存为png图像
- java - 在android studio中单击原始文件夹中的ListView后,如何在第二个活动中从原始文件夹中播放多个音乐文件(.mp3)
- python - 我只想为列表中的每个元素获取相同的索引字母
- python - C 到 Python:For 循环
- google-apps-script - Google Spradsheet 中的 Concat 操作
- c++ - 如何使用 for 循环 (DirectX) 显示某种效果
- reactjs - 我如何在 nextjs 中使用 application/ld+json
- html - 在超链接中发送 cookie
- api - 将本机获取请求反应到.net core 3 api网络请求失败
- mule - ESB 中有效负载的验证