我剛剛開始使用Express的節點,並嘗試使用TypeScript和Node中學習的Typescript in Angular。跟着MDN's Express Route的例子(大約下降一半),所以我可以用/auth
作爲一組路線的前綴。他們使用require('./routes/auth');
來獲取導出的路由器,因爲我使用import * as authRoutes from './routes/auth';
等同於基於docs和stackoverflow的答案。要求vs導入Express路由器到前綴路由
import * as authRoutes from './routes/auth';
app.use('/auth', authRoutes); // Does not work?
VSCode凸顯'/auth'
PARAM並顯示此錯誤[ts] Argument of type '"/auth"' is not assignable to parameter of type 'RequestHandlerParams'
:這個,因爲我不能這樣做顯然是不正確的。
,而這樣做的工作:從MDN例
const authRoutes = require('./routes/auth');
app.use('/auth', authRoutes); // Does work!
路線:
import * as express from 'express';
import { Router, Request, Response, NextFunction } from 'express';
import * as authController from '../controllers/auth.controller';
const router: Router = express.Router();
router.get('/register', (req: Request, res: Response, next: NextFunction) => {
authController.register(req, res);
});
router.get('/login', (req: Request, res: Response, next: NextFunction) => {
authController.login(req, res);
});
module.exports = router;
在一個很高的層次有人能解釋我失蹤我發現這可能是答案在博客等,但他們顯然不是以幫助我理解的方式解釋。
UPDATE
現在看來似乎是一個事物的組合,因爲如果我export { router as authRoutes }
那麼它的工作原理,但我不知道我是否應該這樣做或沒有,或什麼的正確方法導出並將我們的代碼導入到其他文件中。
另外,如果有更好的方式來前綴的路由信息的任何鏈接或建議,歡迎 – mtpultz
我d也想獲得解釋。我遇到了同樣的事情。 – Tyler