Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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 Res.render()不渲染_Javascript_Node.js_Express - Fatal编程技术网

Javascript Res.render()不渲染

Javascript Res.render()不渲染,javascript,node.js,express,Javascript,Node.js,Express,我有一条快速路线,它似乎拒绝呈现一个翡翠模板。当我输入错误的jade模板字符串时,我得到了一个常见的错误,即无法找到呈现到浏览器中的fie 但当我找到合适的人时,什么都不会发生 此外,当我在res.render()之后放置res.status(500).send()时,我最终会得到500错误或我选择放入其中的任何其他代码 这是怎么回事 app.post('/stuff/new',函数(req,res){ Stuff.findById(req.body.booking_id,函数(err,Stu

我有一条快速路线,它似乎拒绝呈现一个翡翠模板。当我输入错误的jade模板字符串时,我得到了一个常见的错误,即无法找到呈现到浏览器中的fie

但当我找到合适的人时,什么都不会发生

此外,当我在
res.render()
之后放置
res.status(500).send()
时,我最终会得到500错误或我选择放入其中的任何其他代码

这是怎么回事

app.post('/stuff/new',函数(req,res){
Stuff.findById(req.body.booking_id,函数(err,Stuff){
if(err){console.log(“err”,err)}
其他如有(预订){
Thungs.findById(req.body.user_id,函数(err,thung){
user.stuff.push(请求body.things);
user.save();
});
Thingers.findById(请求主体中心id,函数(err,thinger){
中心。东西。推(要求身体。东西);
center.save();
});
stuff.prop='thing';
保存(函数(错误、结果){
if(err){console.err(“err”,err)}
否则{
res.render(‘预订/谢谢’{
url:req.url,
id:“谢谢”
},函数(err,html){
if(err){console.err(“err”,err)}
否则{
res.send(html);
}
});
res.status(500.send();
}
});
}
})

});您不需要
res.send(html)
如果您不想渲染模板,只需从
res.render()
中删除回调即可。当
res.status(500.send())时也是如此显示为500,因为连接在
res.render()
res.send()
之后不会终止,它们后面的语句将执行,您可以使用
返回res.render()
返回res.send()
然后控件将不会转到
res.status(500)。send()


希望它有帮助:)

你不需要
res.send(html)
如果您不想渲染模板,只需从
res.render()
中删除回调即可。当
res.status(500.send())时也是如此显示为500,因为连接在
res.render()
res.send()
之后不会终止,它们后面的语句将执行,您可以使用
返回res.render()
返回res.send()
然后控件将不会转到
res.status(500)。send()


希望它有帮助:)

整个
东西.save()
回调是不正确的,因为您永远不会返回
res.render()的结果。但是,会执行
res.render()
,因为您将回调传递给
res.render()
,它不会自动响应请求

呈现视图并将呈现的HTML字符串发送到客户端。可选参数:

  • 局部变量,其属性定义视图的局部变量的对象

  • 回调,一个回调函数。如果提供,该方法将返回可能的错误和呈现的字符串,但不执行自动响应。当发生错误时,该方法在内部调用next(err)

由于
res.render()
函数没有阻塞,因此
stuff.save()
回调将继续执行到
res.status(500).send()
并响应。最终,您的视图不会被渲染,您的左侧会得到一个500内部服务器错误作为响应

重要的是要注意,在几乎所有的场景中,当您要在响应后停止执行响应时,
返回
是一种“最佳实践”。您唯一不想在响应时使用
返回
的时候是,如果您需要在之后执行某种类型的清理例程

以下代码在成功时正确返回
res.render()
,在发生错误时正确返回
res.status(500)

stuff.save(function(err, result){
  if (err) { 
    console.err("err", err) 

    // An error occurred, stop execution and return 500
    return res.status(500).send();
  } 

  // No error occurred, attempt to render the view 
  // and return the outcome of the rendering to the callback
  res.render('booking/thank_you', {
      url: req.url,
      id: "thank_you"
    }, function(err, html){
      if (err) { 
        console.err("ERR", err) 

        // An error occurred, stop execution and return 500
        return res.status(500).send();
      }

      // Return the HTML of the View
      return res.send(html);
    });
  }
});

整个
stuff.save()
回调不正确,因为您从未返回
res.render()的结果。但是,会执行
res.render()
,因为您将回调传递给
res.render()
,它不会自动响应请求

呈现视图并将呈现的HTML字符串发送到客户端。可选参数:

  • 局部变量,其属性定义视图的局部变量的对象

  • 回调,一个回调函数。如果提供,该方法将返回可能的错误和呈现的字符串,但不执行自动响应。当发生错误时,该方法在内部调用next(err)

由于
res.render()
函数没有阻塞,因此
stuff.save()
回调将继续执行到
res.status(500).send()
并响应。最终,您的视图不会被渲染,您的左侧会得到一个500内部服务器错误作为响应

重要的是要注意,在几乎所有的场景中,当您要在响应后停止执行响应时,
返回
是一种“最佳实践”。您唯一不想在响应时使用
返回
的时候是,如果您需要在之后执行某种类型的清理例程

以下代码在成功时正确返回
res.render()
,在发生错误时正确返回
res.status(500)

stuff.save(function(err, result){
  if (err) { 
    console.err("err", err) 

    // An error occurred, stop execution and return 500
    return res.status(500).send();
  } 

  // No error occurred, attempt to render the view 
  // and return the outcome of the rendering to the callback
  res.render('booking/thank_you', {
      url: req.url,
      id: "thank_you"
    }, function(err, html){
      if (err) { 
        console.err("ERR", err) 

        // An error occurred, stop execution and return 500
        return res.status(500).send();
      }

      // Return the HTML of the View
      return res.send(html);
    });
  }
});

这可能是因为我使用$.ajax调用此路由吗?您是否将express设置为使用jade?您是否可以检查chrome开发工具以检查服务器的响应?(首先移除
res.status(500)…
)。另外,您的控制台中是否显示错误?这可能是重复的,因为我正在使用$.ajax调用此路由?您是否将express设置为使用jade?您是否可以检查chrome开发工具以进行检查