我使用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');
} );
}
答案 0 :(得分:-1)
您是否尝试过将path.join()添加到该发送中? 像这样:
var path = require('path');
...
res.sendFile(path.join(__dirname + '/public/thanks.html'));
也可能需要您的应用使用express.static()