即使使用 body-parser,node.js post 方法 req.body 也未定义

大家好,我正在使用 Node js 来使用对话流聊天机器人,


我正在尝试从 http 请求 post 方法中获取参数


我为此使用了 postman,是的,我确实在标头中将内容类型设置为 json,我的请求正文有以下代码:


{

"text":"hello"

}

和以下链接 http://localhost:5000/api/df_text_query


我有以下 index.js 文件:


const express = require('express');

const bodyParser = require('body-parser');



const app = express();


require('./routes/dialogFlowRoutes')(app);



app.use(bodyParser.json());

app.use(bodyParser.urlencoded({ extended: true }))


app.get('/',(req , res)=>{


res.send({'hello':'Johnny'});


});



const PORT = process.env.port || 5000;


app.listen(PORT);

这是我的dialogflowRoutes.js 文件:


const dialogflow = require('dialogflow');

 const config = require('../config/keys');

 const sessionClient = new dialogflow.SessionsClient();

 const sessionPath = sessionClient.sessionPath(config.googleProjectID, config.dialogFlowSessionID);

    module.exports = app => {

    app.get('/', (req, res) => {

        res.send({ 'hello': 'world!' })

        

    });

    app.post('/api/df_text_query', async (req, res) => {

        console.log(req.body)

        const request = {

            session: sessionPath,

            queryInput: {

                text: {

                    text: req.body.text,

                    languageCode: config.dialogFlowSessionLanguageCode

                }

            }

        };


    let responses = await sessionClient

        .detectIntent(request);


    res.send(responses[0].queryResult)

    });


app.post('/api/df_event_query', (req, res) => {

    res.send({ 'do': 'event query' })

});

}

这是我发送以下请求时收到的错误


dialogFlowRoutes.js:17

                    text: req.body.text,

                                   ^


TypeError: Cannot read property 'text' of undefined


繁华开满天机
浏览 136回答 1
1回答

梵蒂冈之花

初始化中间件的顺序很重要。在对 body 进行操作之前,您必须对其进行解析。初始化 bodyParser 后移动路由中间件,如下所示:app.use(bodyParser.json());app.use(bodyParser.urlencoded({ extended: true }))require('./routes/dialogFlowRoutes')(app);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript