TypeScript配合ESLint使用express.Router出现校验报错如何解决?
问题根因
- 第一个报错来自ESLint的
new-cap校验规则:规则默认要求所有首字母大写的函数必须作为构造函数使用new调用,但express.Router是官方设计的工厂函数,本身就不需要用new调用。 - 第二个TypeScript报错是因为
@types/express的类型定义中没有给Router提供构造签名,强制用new调用不符合类型约束,加类型注解也解决不了本质问题。
可行解决方案(无需修改全局ESLint配置)
方案1:单行忽略new-cap校验
在调用行上方加单行ESLint忽略注释,仅屏蔽这一行的new-cap校验,不影响其他代码的规则生效:
// eslint-disable-next-line new-cap const router = express.Router();
方案2:给express.Router设置小驼峰别名
new-cap仅校验调用时的函数名首字母大小写,你可以先把express.Router赋值给一个小驼峰命名的变量再调用,完全符合规则要求:
const createExpressRouter = express.Router; const router = createExpressRouter();
内容的提问来源于stack exchange,提问作者galah92
相关产品推荐
相关产品推荐

