express 中导入变量的问题,错误:Route.get() 需要回调函数

Posted

技术标签:

【中文标题】express 中导入变量的问题,错误:Route.get() 需要回调函数【英文标题】:Problem with import variable in express, Error: Route.get() requires a callback function 【发布时间】:2020-09-02 07:33:47 【问题描述】:

我尝试将requireSignincontrollers/auth.js文件导入routes/user.js文件并将其放入 router.get('/user/:id', requireSignin, read);路线。

我有以下错误:

错误:Route.get() 需要一个回调函数但得到了一个 [object 未定义]

controllers/auth.js

const expressJwt = require('express-jwt');

exports.requireSignin = expressJwt(
    secret: process.env.JWT_SECRET
);

routes/user.js

const express = require('express');
const router = express.Router();

const requireSignin = require('../controllers/auth');
const read = require('../controllers/user');

router.get('/user/:id', requireSignin, read);

module.exports = router;

但如果我不导入它,我只能以另一种方式进行,直接在一个文件routes/user.js 中。效果很好。

routes/user.js

const express = require('express');
const router = express.Router();
const expressJwt = require('express-jwt');

const read = require('../controllers/user');

router.get('/user/:id', expressJwt(
    secret: process.env.JWT_SECRET
), read);

module.exports = router;

【问题讨论】:

【参考方案1】:

这个错误对我来说很清楚。请尝试使用调试器(*** 用户中严重低估的工具)确认它,但看起来const requireSignin = require('../controllers/auth'); 行使用undefined 而不是中间件函数初始化requireSignin。这可能有几个原因。也许您的 IDE 向节点添加了一些参数,阻止它接受符号 exports.requireSignin,而您实际上必须将其指定为 module.exports.requireSignin。如果不是这样,假设这不是您的代码的完整版本并且只是简化了几行以突出问题,请确保您的导入和导出之间没有任何拼写错误。

【讨论】:

我不得不使用 module.exports.requireSignin

以上是关于express 中导入变量的问题,错误:Route.get() 需要回调函数的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Gulp 项目中导入 React Router Dom

如何在下一个 js 中从节点模块外部的文件夹中导入模块

Python中导入模块后别名变量的行话是啥?

如何使用 PostCSS 在 Vue 中导入全局 CSS?

如何在 Angular 6 中导入 sass 文件

在python中导入timeit.timeit变量