![](/img/trans.png)
[英]Api : Express : throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))
[英]throw new TypeError('Router.use() requires a middleware function but got a + gettype(fn)). (other problem)
嗨,我正在 NodeJS 下編寫一個應用程序,但出現以下錯誤:
throw new TypeError('Router.use() 需要一個中間件 function 但得到一個 ' + gettype(fn)) ^
TypeError: Router.use() requires a middleware function but got a Object at Function.use (C:\Users\decopiapo\restserver1221\node_modules\express\lib\router\index.js:458:13) at Function. (C:\Users\decopiapo\restserver1221\node_modules\express\lib\application.js:220:21) 在 Array.forEach () 在 Function.use (C:\Users\decopiapo\restserver1221\node_modules\express\lib\ application.js:217:7) 在 Server.routes (C:\Users\decopiapo\restserver1221\models\server.js:58:14) 在新服務器 (C:\Users\decopiapo\restserver1221\models\server.js :19:14) 在 Object。 (C:\Users\decopiapo\restserver1221\app.js:3:16) 在 Module._compile (node:internal/modules/cjs/loader:1101:14) 在 Object.Module._extensions..js (node:internal /modules/cjs/loader:1153:10) 在 Module.load (node:internal/modules/cjs/loader:981:32) [nodemon] 應用程序崩潰 - 在開始之前等待文件更改...
該代碼是:
const {Router} = 要求('express');
const { check } = require('express-validator');
const { login} = require('../controllers/auth');
const { validatefields } = require('../middlewares/validate-fields');
常量路由器 = 路由器();
router.post('/登錄', [
check('電子郵件', '電子郵件是強制性的').isEmail(),
check('password', '必須輸入密碼').not().isEmpty(),
驗證字段
],
登錄);
module.exports = { 路由器 }
……
筆記
如果我將“module.exports = { router }”更改為“module.exports = router” ,問題就會消失,但如果我想導出一個常量或其他 function 怎么辦?
例子:
const {Router} = 要求('express');
const { check } = require('express-validator');
const { login} = require('../controllers/auth');
const { validatefields } = require('../middlewares/validate-fields');
常量 myvar = '12321@as';
常量路由器 = 路由器();
router.post('/登錄', [
check('電子郵件', '電子郵件是強制性的').isEmail(),
check('password', '必須輸入密碼').not().isEmpty(),
驗證字段
],
登錄);
module.exports = { 路由器, myvar }
錯誤再次出現...
throw new TypeError('Router.use() 需要一個中間件 function 但得到一個 ' + gettype(fn)) ^
類型錯誤:Router.use() 需要中間件 function 但在 Function.use 處獲得了 Object
我該如何解決這個問題。 有任何想法嗎?
節點版本:v16.11.1 - Express 版本:4.17.1
你可以隨心所欲地導出,問題是你如何需要它。
檢查您的服務器文件,如果您像這樣導出它:
// router
module.exports = {myRouter, myvar};
那么你需要像這樣要求它:
// app
app.use('/', routerFile.myRouter);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.