当前位置: 首页 > 知识库问答 >
问题:

抛出新的TypeError('Router.use()需要一个中间件函数,但得到了一个gettype(fn))。(其他问题)

梁丘逸仙
2023-03-14

您好,我正在NodeJS下编写应用程序,但出现以下错误:

抛出新的TypeError('Router.use()需要一个中间件函数,但得到了一个'gettype(fn))^

TypeError: Router.use()需要一个中间件函数,但在Function.use(C:\User\decopiapo\restserver1221\node_modules\Express\lib\router\index.js:458: 13)在Function得到一个Object。(C:\User\decopiapo\restserver1221\node_modules\Express\lib\application.js:220: 21)在Array.for每个()在Function.use(C:\User\decopiapo\restserver1221\node_modules\Express\lib\application.js:217: 7)在Server.routes(C:\User\decopiapo\restserver1221\模型\server.js:58: 14)在新服务器(C:\User\decopiapo\restserver1221\模型\server.js:19: 14)在对象。(C:\User\decopiapo\restserver1221\app.js: 3:16)在模块。_compile(节点:内部/模块/cjs/loader: 1101:14)在对象。模块。_extensions... js(节点:内部/模块/cjs/loader: 1153:10)在Module.load(节点:内部/模块/cjs/loader: 981:32)[no恶魔]应用程序崩溃-在开始之前等待文件更改...

代码是:

const{Router}=require('express');

const{check}=require('express-validator');

const{login}=需要('.../控制器/auth');

const{validatefields}=require(“../middleware/validate fields”);

const router=router();

路由器。post(“/login”[

勾选(‘电子邮件’,‘电子邮件是必需的’)。isEmail(),

检查('密码','密码是强制性的'). not(). is空(),

验证字段

],

登录);

module.exports={路由器}

....

笔记

如果我将"module.exports={router}"更改为"module.exports=router",问题就会消失,但是如果我想导出一个常量或其他函数怎么办?

例子:

const{Router}=require('express');

const{check}=require('express-validator');

const{login}=需要('.../控制器/auth');

const{validatefields}=require(“../middleware/validate fields”);

康斯特·米瓦尔12321@as';

const router=router();

路由器。post(“/login”[

勾选(‘电子邮件’,‘电子邮件是必需的’)。isEmail(),

检查('密码','密码是强制性的'). not(). is空(),

验证字段

],

登录);

单元导出={router,myvar}

错误再次出现...

抛出新的TypeError('Router.use()需要一个中间件函数,但得到了一个'gettype(fn))^

类型错误:路由器。use()需要一个中间件函数,但在函数处得到了一个对象。使用

我怎样才能解决这个问题。有什么想法吗?

节点版本:v16。11.1-快速版:4.17.1

共有1个答案

彭鸿哲
2023-03-14

你可以随心所欲地导出它,问题是你如何要求和使用它。

检查服务器文件,如果按以下方式导出:

// some router
module.exports = {myRouter, myvar};

然后你需要这样使用它:

// app
app.use('/some-routes', someRoutes.myRouter);

或者,您可以在需要的步骤进行处理:

//app
const someRoutes = require('./routes/some-routes').myRouter;
//...
app.use('/some-routes', someRoutes);
 类似资料: