导出variables“路由器”具有或正在使用来自外部模块的名称“路由器”,但无法命名

在直接使用Typescript 2和@types/express@4.0.35定义导出路由器时,在多个文件中定义嵌套路由器的常见结构如下代码抛出

 error TS4023: Exported variable 'router' has or is using name 'Router' from external module "[...]/node_modules/@types/express-serve-static-core/index" but cannot be named. 

从basarat的答案采取的例子

 import * as express from "express"; // import sub-routers import * as adminRouter from "./admin/admin"; import * as productRouter from "./products/products"; let router = express.Router(); // mount express paths, any addition middleware can be added as well. // ex. router.use('/pathway', middleware_function, sub-router); router.use('/products', productRouter); router.use('/admin', adminRouter); // Export the router export = router; 

解决scheme是显式注释路由器variables( TypeScript / issues / 5711#issuecomment-161194656 )。

以下代码将工作(注意let router: express.Router = express.Router()

 import * as express from "express"; import * as adminRouter from "./admin/admin"; import * as productRouter from "./products/products"; let router: express.Router = express.Router(); router.use('/products', productRouter); router.use('/admin', adminRouter); // Export the router export = router;