Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 已使用响应节点js后重定向_Javascript_Node.js - Fatal编程技术网

Javascript 已使用响应节点js后重定向

Javascript 已使用响应节点js后重定向,javascript,node.js,Javascript,Node.js,我想呈现一些页面,在一定时间后,它需要重定向到另一个页面。然而,我得到了一个“发送后无法设置标题”的提示。从我所读到的信息来看,响应应该只使用一次,尽管我不确定这是否属实。我将非常感谢对这个特殊问题的任何帮助或解决方案 app.get('/', function (req, res) { var message = req.flash(); res.render('index', { message: req.flash('message'), hassError: messag

我想呈现一些页面,在一定时间后,它需要重定向到另一个页面。然而,我得到了一个“发送后无法设置标题”的提示。从我所读到的信息来看,响应应该只使用一次,尽管我不确定这是否属实。我将非常感谢对这个特殊问题的任何帮助或解决方案

app.get('/', function (req, res) {
    var message = req.flash();
    res.render('index', { message: req.flash('message'), hassError: message.length > 0} );
});

app.get('/error', function (req, res) {
    var timeout = 3000;

    setTimeout(function (err) {
        console.log('finished');
        if (err)
            throw err;
        console.log('################');
        res.redirect('/');
    }, timeout);
    res.render('partials/404');
});

“finished”被打印出来,然后抛出错误,但不是回调中指定的错误。

您不能使用这种方法-呈现意味着将头发送到浏览器,然后浏览器关闭HTTP请求。您无法发送第二个响应

您必须在页面上的JavaScript中执行超时逻辑,而不是服务器:

<script>
  var timeout = 3000;

  setTimeout(function () {
     window.location = "http://www.yoururl.com";
  }, timeout);
</script>

var超时=3000;
setTimeout(函数(){
window.location=”http://www.yoururl.com";
},超时);

您不能使用这种方法-呈现意味着将头发送到浏览器,然后浏览器关闭HTTP请求。您无法发送第二个响应

您必须在页面上的JavaScript中执行超时逻辑,而不是服务器:

<script>
  var timeout = 3000;

  setTimeout(function () {
     window.location = "http://www.yoururl.com";
  }, timeout);
</script>

var超时=3000;
setTimeout(函数(){
window.location=”http://www.yoururl.com";
},超时);

您尝试发送的重定向应该在用户点击服务器时在服务器端右侧完成,或者在404页面加载后在浏览器上完成。

您尝试发送的重定向应该在用户点击服务器时在服务器端右侧完成,或者在404页面加载后在浏览器上完成。

您不能对单个请求发送多个响应。就像有人向你要汉堡,你给了他们一个汉堡,他们就走开了。过了一段时间,你又朝他们的后脑勺扔了一个汉堡。他们不会抓住它的

在这种情况下,您需要在客户端处理重定向。如果这只是一个常规页面呈现,那么可以使用
meta
标记的
refresh
属性



如果这是一个AJAX请求,您需要让客户端在延迟后执行重定向。

您不能对一个请求发送多个响应。就像有人向你要汉堡,你给了他们一个汉堡,他们就走开了。过了一段时间,你又朝他们的后脑勺扔了一个汉堡。他们不会抓住它的

在这种情况下,您需要在客户端处理重定向。如果这只是一个常规页面呈现,那么可以使用
meta
标记的
refresh
属性



如果这是一个AJAX请求,您需要让客户端在延迟后执行重定向。

您在api上发送了两次res.redirect。您最好的选择可能是在partials 404页面上设置超时,您将在api上发送两次res.redirect。您最好的选择可能是在partials 404页面上设置超时,就像一个符咒。谢谢你,太好了,如果你能接受这个答案,我会很感激的。很有魅力。非常感谢,如果你能接受这个答案,我将不胜感激。