我正在关注Building a Node.js App with TypeScript Tutorial的教程。我想分开路线。所以我尝试创建一个路径文件夹并创建一个test.ts文件,其中包含以下内容:
import {Router} from "express";
let router = Router();
router.get('/', get);
/**
* GET /
* @param req
* @param res
* @param next
*/
export async function get(req, res, next) {
try {
res.send("Testing...");
} catch (err) {
console.log('err', err);
next(err);
}
}
export {router};
现在我尝试在server.ts文件中使用它,如下所示:
import * as express from "express";
import * as TestRoute from './routes/test';
class App {
public express : express.Application;
constructor() {
this.express = express();
this.mountRoutes();
}
private mountRoutes() : void {
const routes: express.Router = express.Router();
routes.use('/test', TestRoute);
this.express.use('/', routes);
}
}
export default new App().express;
但是在这一行中routes.use('/test', TestRoute);
TypeScript抛出错误:
Argument of type ... is not assignable to parameter of type 'RequestHandlerParams'.
Argument of type ... is not assignable to type '(RequestHandler | ErrorRequestHandler)[]'.
Property 'includes' is missing in type ...
...是我的test.ts文件的路径。
有人可以帮我识别这个错误是什么吗?你能否给我一个创建路径的基本结构,并将其包含在TypeScript应用程序中。我正在使用TypeScript 2.7。
答案 0 :(得分:2)
您的问题是server.ts文件中的导入,更具体地说明了您使用该模块的方式。
如果您查看TestRoute对象,它实际上只是一个模块,其中包含您已导出的所有内容。所以你需要以某种方式访问router
对象。这可以通过两种方式完成。
import { router as TestRoute } from './routes/test';
routes.use
routes.use('/test', TestRoute.router);
行中模块的访问方式
醇>
任何一个选项都可以,但你只需要使用一个!