res.sendFile()没有做任何事情

时间:2016-06-03 19:56:18

标签: javascript node.js express

我使用node.js,express,request-promise,并且我正在编写server.js文件。在.then声明中,我有res.sendFile(__dirname + '/public/thanks.html');,似乎没有做任何事情。当我使用Chrome浏览器的开发工具进行检查并查看网络标签时,我从未在客户端上收到任何名为thanks.html的内容。 rp(slackPost)没有问题,因为我在Slack中正确接收了该消息。 console.log('Worked!');console.log('sent');都完美无缺。我是否错误地使用res.sendFile()功能?

这是我的server.js文件的相关部分:

app.post('/contact_us', function (req, res) {
//send input to Slack

// console.log('Working.');
// console.log(req.body);

//sets options to create a POST request (request-promise) to send the stuff to slack
var slackPost = {
    headers: {
        'Content-type': 'application/json'
    },
    method: 'POST',
    uri: 'https://hooks.slack.com/services/API/key/here',
    body: '{\x22text\x22:\x22' + req.body.fname + '\n' + req.body.email + '\n' + req.body.info + '\x22}',
    json: false // Automatically stringifies the body to JSON
};

// console.log('Still working.');

rp(slackPost)
    .then(function (parsedBody) {
        // POST succeeded...
        console.log('Worked!');
        res.sendFile(__dirname + '/public/thanks.html');
        // res.redirect('public/thanks.html');
        // res.json(null);
        console.log('sent');
    })
    .catch(function (err) {
        // POST failed...
        // console.log('Failed :(');
        console.log(err);
    });
});

这是在提交时运行的脚本:

function sendToSlack() {
var fname = document.forms["contact"]["fname"].value;
var email = document.forms["contact"]["email"].value;
var info = document.forms["contact"]["info"].value;
var formInput = {
    fname: fname,
    email: email,
    info: info
};

fetch('/contact_us', {
method: 'POST',
headers: {
    'Content-Type':'application/json'
},
body: JSON.stringify(formInput)
})
.then(function(res) {
    window.location.replace('public/thanks.html');
    console.log('Posted');
} )
.catch(function(err) {
    console.log('problem');
} );
}

1 个答案:

答案 0 :(得分:-1)

您是否尝试过将path.join()添加到该发送中? 像这样:

var path = require('path');

...

res.sendFile(path.join(__dirname + '/public/thanks.html'));

也可能需要您的应用使用express.static()