如何解决res.end() 不关闭 NodeJS 中的脚本执行
返回 res.end() 不关闭脚本执行。 最初它呈现表单,当我提交时,它执行 if 语句的右大括号下面的代码块。 我认为执行应该在 return res.end() 行结束。
const http = require("http");
const server = http.createServer((req,res) => {
const url = req.url;
if (url === "/") {
res.write("<html>");
res.write("<head><title>FORM</title></head>");
res.write(
"<body><form action='/message' method='POST'><input type='text' name='message' /><button>Send</button></from></body>"
);
res.write("</html>");
return res.end();
}
res.setHeader("Content-Type","text/html");
res.write("<html>");
res.write("<head><title>APP</title></head>");
res.write("<body><h1>Demo APP</h1></body>");
res.write("</html>");
});
server.listen(4000);
解决方法
请将 console.log(req.url)
添加到请求处理程序的开头。你会发现:
return res.end();
确实通过从请求处理程序回调中返回来停止执行该特定请求。
但是,您很可能会收到另一个传入的 http 请求,可能是针对 favicon.ico
。一般来说,您永远不应该在请求处理程序中使用代码对正在请求的资源零关注,除非它发回像 404 这样的错误,因为有很多请求可能会向您的 http 服务器发出一些标准资源 sucn如 robots.txt
、favicon.ico
、sitemap.xml
等,除非您为这些请求发送适当的数据,否则您不应响应这些请求。
您可能希望将其余代码放在 ELSE 块中以确保它仅在 URL!=="/" 时运行
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。