簡體   English   中英

throw new TypeError('Router.use() 需要一個中間件 function 但得到了一個 + 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM