【问题标题】:Exported variable 'router' has or is using name 'Router' from external module but cannot be named导出的变量“路由器”具有或正在使用来自外部模块的名称“路由器”,但无法命名
【发布时间】:2017-01-25 09:03:25
【问题描述】:

在直接使用 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's answer

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;

【问题讨论】:

    标签: node.js express typescript module


    【解决方案1】:

    解决方案是显式注释路由器变量 (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;
    

    【讨论】:

    • 你的productRouter 里有什么,我刚试过import router from "../app" router.get("/", (req, res) => { res.send("Hello World!"); }); export = router; 没有用
    猜你喜欢
    • 2017-10-09
    • 2018-01-06
    • 1970-01-01
    • 2017-12-07
    • 2019-12-07
    • 2019-06-06
    • 2019-05-17
    • 2018-04-15
    • 2017-09-06
    相关资源
    最近更新 更多