Problem with import variable in express, Error: Route.get() requires a callback function

Problem with import variable in express, Error: Route.get() requires a callback function

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

我有以下错误:

Error: Route.get() requires a callback function but got a [object Undefined]

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;

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