执行多次导出时"Error: Route.get() requires a callback function but got a [object Undefined]"



我正在尝试导出中间件函数,以便其他类可以调用它。

我做了一些谷歌搜索,但没有为我的案件工作。

这是代码

auth.js

isLoggedIn = (req, res, next) => {
next();
}
module.exports.isLoggedIn = isLoggedIn;
module.exports = app => {
};

profile.js

const isLoggedIn = require('./auth').isLoggedIn;
let profile = [];
getAllProfile = (req, res) => {
res.send(profile);
}
module.exports = (app) => {
app.get('/all-profile',isLoggedIn, getAllProfile);
}

index.js

const express = require("express");
const bodyParser = require("body-parser");
const app = express();
app.use(bodyParser.json());
const port = process.env.PORT || 3000;
const server = app.listen(port, () => {
const addr = server.address();
console.log(`Server listening at ${port}`);
});

let auth = require("./src/auth");
auth(app);
let profile = require("./src/profile");
profile(app);

错误消息为

node_modulesexpresslibrouterroute.js:202
throw new Error(msg);
^
Error: Route.get() requires a callback function but got a [object Undefined]

我在这里做错了什么?

您在这里用第二行覆盖module.exports

module.exports.isLoggedIn = isLoggedIn;
module.exports = app => {
};

因此,.isLoggedIn不再是您指定的新导出对象的属性。你可以翻转订单:

module.exports = app => {
};
module.exports.isLoggedIn = isLoggedIn;

这样,首先定义一个新的module.exports对象(恰好是一个函数对象(,然后向新对象添加一个属性。

相关内容

最新更新