Route.post()需要回调函数,但得到了[object Undefined],但它返回了一个函数

时间:2018-09-25 11:55:29

标签: node.js express

我知道这个问题已经发布了好几次了,这总是一个基本的错误,我已经遇到了这个问题,而且这总是一个已经发布过的问题的错误。

就像我以这种方式制造的第六台服务器一样,这次我不知道为什么它不认为是功能。

here is the error displayed on the console

此处发生错误

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

module.exports = (api) => {

   router.post('/',
       api.middlewares.ensureAuthenticated,
       api.middlewares.bodyParser.json(),
       api.middlewares.agentDispenser.createMyAgent,
       api.actions.hub);

   return router;
}

当我发表评论

api.middlewares.agentDispenser.createMyAgent

它不会崩溃

我的中间件索引看起来像

module.exports = (api) => {
    api.middlewares = {
        bodyParser: require('body-parser'),
        ensureAuthenticated: require('./ensureAuthenticated'),
        agentDispenser: require('./agentDispenser')
    };
};

和agentDispenser看起来像这样

const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');
var agent;

module.exports = (api) => {

    function createMyAgent(req, res, next) {
        agent = new WebhookClient({ req, res })
        return next()
    }

    function getMyAgent() {
        return agent
    }

    return {
        createMyAgent,
        getMyAgent
    }
}

正如我所说,我在许多项目上使用相同的语法/结构,并且可以正常工作,所以我真的不知道问题出在哪里,我已经读了很多关于此的话题,很多都是关于放弃的回报或缺少(api)...但是在这里我不知道

非常感谢您的帮助

编辑:对我感到羞耻...

1 个答案:

答案 0 :(得分:1)

r': (.+)' api.middlewares.agentDispenser.createMyAgent,因为undefined是一个接受api.middlewares.agentDispenser并返回中间件名称空间的函数,而不是名称空间本身。

我猜你想要类似的东西

api