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 【问题描述】:我尝试将requireSignin
从controllers/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() 需要回调函数的主要内容,如果未能解决你的问题,请参考以下文章