[英]how can Export the class and define middleware in typescript
我創建了 class 用戶,我只定義了 get 方法,但是當我在中間件中調用 class 並使用它時,它沒有顯示任何錯誤,但是當我運行代碼時它顯示找不到服務器。 當我刪除這條線app.use(userRoute)我的服務器工作。
用戶.ts
import { NextFunction, Request, Response } from 'express';
import { Controller, Get, Req, Res } from 'routing-controllers'
@Controller()
class User {
@Get('/signup')
signUP(@Req() req: Request, @Res() res: Response, next: NextFunction) {
return res.render('signup')
};
}
export { User as userRoute }
應用程序.ts
const express = require('express')
const path = require('path')
const app = express()
import { userRoute } from "./routes/user";
const bodyPaser = require('body-parser')
app.use(bodyPaser.urlencoded({ extended: true }))
app.set('views', path.join(__dirname, 'views'))
app.set('view engine', 'ejs')
app.use(userRoute)
app.use('/', (req, res) => {
res.write('<html lang="eng">');
res.write('<head><title>Page</title><style>body{background-color: wheat; color: red; font- size: 25px; padding-left: 250px;}.d{}</style></head>')
res.write('<body><h1>It is working</h1></body>')
res.write('</html>')
return res.end()
});
app.listen('3000')
console.log('working')
在導出前創建 class 的實例。 嘗試一些像:
class User {
...
}
const userRoute = new User()
export {userRoute}
基於
routing-controllers
的文檔更新
根據該庫的github頁面,在 express 中的使用應該是這樣的:
@Controller()
export class UserController {
@Get("/users")
getAll(@Req() request: Request, @Res() response: Response) {
return response.send("Hello response!");
}
}
import "reflect-metadata";
import { useExpressServer } from "routing-controllers";
let express = require("express"); // or you can import it if you have installed typings
let app = express(); // your created express server
// app.use() // you can configure it the way you want
useExpressServer(app, { // register created express server in routing-controllers
controllers: [UserController] // and configure it the way you need (controllers, validation, etc.)
});
app.listen(3000); // run your express server
看看他們的文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.