当前位置: 首页 > 面试题库 >

为什么我们不能在Express.js中执行多个response.send?

程和蔼
2023-03-14
问题内容

3年前,我可以在express.js中进行多个res.send。
甚至编写setTimeout来显示实时输出。

response.send('<script class="jsbin" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>');
response.send('<html><body><input id="text_box" /><button>submit</button></body></html>');
var initJs = function() {
  $('.button').click(function() {
    $.post('/input', { input: $('#text_box').val() }, function() { alert('has send');});
  });
}
response.send('<script>' + initJs + '</script>');

现在它将抛出:

Error: Can't set headers after they are sent

我知道nodejs和express已更新。为什么现在不能这样做?还有其他想法吗?

找到了解决方案,但API参考http://expressjs.com/4x/api.html中没有“
res.write” …

:S


问题答案:

也许您需要: response.write

response.write("foo");
response.write("bar");
//...
response.end()

res.send隐式调用,res.write后跟res.end。如果您res.send多次呼叫,它将在第一次运行。但是,由于第一个res.send调用结束了响应,因此您无法在响应中添加任何内容。



 类似资料:
  • 我正在运行这样一个简单的SQL连接和select,但在运行查询时,我遇到了非常奇怪的错误。 警告:mysqli_fetch_array()希望参数1是mysqli_结果,布尔值在第23行的C:\xampp\htdocs\Webmaster\run\forum_mc.php中给出 警告:mysqli_query():第24行()上C:\xampp\htdocs\Webmaster\run\forum

  • 问题内容: 我正在学习Go,并且想尝试goroutine和频道。 这是我的代码: 结果如下: 我不明白为什么我的goroutine永远不会执行。没有输入“进入goroutine”,并且没有任何错误消息。 问题答案: 事实是您的goroutine开始执行,但是在执行任何操作之前就结束了,因为您的程序在打印后立即停止:goroutine的执行与主程序无关,但是将在与程序相同的位置处停止。因此,基本上,

  • 问题内容: 我在MacOSX上使用Docker(带有Boot2Docker)。 我可以从Docker Hub运行映像。 但是,当我尝试像这样运行自己的映像之一时: 要么 要么 我得到: 我猜它找不到在容器中执行的bash二进制文件,但是为什么呢? 基本图像是 谢谢你的帮助。 阿什莉 问题答案: 您的图片基于不带bash外壳的busybox。它的确有外壳。 所以这不起作用: 但这确实是: 由于您的入

  • 首先,我发现了另外两条有类似问题的线索。问题在于,他们没有为字符串使用正确的等号,也没有为他们的特定问题正确设置if语句的格式。 在我的任务中,我需要创建一个名为“猪”的游戏,玩家与计算机对决,在掷骰子时先获得100分。如果玩家在一个回合中掷1,他们不会得到额外的分数。如果玩家掷两个1,那么他们将失去所有分数。我还没有对电脑的回合进行编码,只是专注于玩家。请告诉我我做错了什么。提前非常感谢。 我的

  • 问题内容: 我明白: 由于抽象类本身并不是什么,例如车辆,我们想要创建一个具体实现的对象,例如Car,Bike等。 对象链期间将调用抽象类的构造函数。 我们永远不能直接创建抽象类的对象,即使它包含构造函数并且所有方法都已实现。 但是从编译器的角度来看,Java为什么要强制执行这些规则? 问题答案: 这不是技术限制,而是(如您所指出的)逻辑上的限制。Java(和许多其他语言)执行各种规则不是因为它们

  • 我遇到了用ProcessBuilder执行Windows程序的问题。下面的代码将生成一个命令数组,如: 当我调试Java程序时,我可以看到gdalwarp.exe是可执行的,并且环境设置与在cmd终端中执行gdalwarp.exe时相同。processBuilder似乎不执行GDalWarp。我得到的退出代码是-1073741511,它应该是0或-1。errorStream是空的,我没有得到任何打