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
我尝试将 requireSignin
从 controllers/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
。如果不是这样,假设这不是您的代码的完整版本,只是简化了几行以突出问题,请确保您的导入和导出之间没有任何拼写错误。
我尝试将 requireSignin
从 controllers/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
。如果不是这样,假设这不是您的代码的完整版本,只是简化了几行以突出问题,请确保您的导入和导出之间没有任何拼写错误。