Javascript express4-REST客户端通过异步处理程序获得404的路由
编辑2-已修复 我刚刚在我的项目文件夹中重新安装了express,它正常工作了。几秒钟后,它停止了工作 我正在使用Webstorm,并且有一个用于ES6文件的babel文件监视程序。当安装一个节点模块时,该文件监视程序会起作用,并且似乎会以某种方式弄乱模块代码 我为文件监视程序设置了一个特定的范围。我使用*.es6作为es6代码文件。现在一切都好了 原始问题 所以我有一个最简单的表达:Javascript express4-REST客户端通过异步处理程序获得404的路由,javascript,node.js,asynchronous,express,Javascript,Node.js,Asynchronous,Express,编辑2-已修复 我刚刚在我的项目文件夹中重新安装了express,它正常工作了。几秒钟后,它停止了工作 我正在使用Webstorm,并且有一个用于ES6文件的babel文件监视程序。当安装一个节点模块时,该文件监视程序会起作用,并且似乎会以某种方式弄乱模块代码 我为文件监视程序设置了一个特定的范围。我使用*.es6作为es6代码文件。现在一切都好了 原始问题 所以我有一个最简单的表达: var express = require('express'); var app = express();
var express = require('express');
var app = express();
var router = express.Router();
router.route("/test").get(function (req, res) {
console.log(res.headersSent);
setTimeout(() => {
console.log(res.headersSent);
try {
res.send("done waiting");
} catch(e) {
console.log(e.stack);
}
}, 1000);
});
app.use("/", router);
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('App listening at http://%s:%s', host, port);
});
我运行服务器并向localhost:3000/test发出GET请求
我马上得到404。控制台说
App listening at http://:::3000
false
true
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:350:11)
应用程序在http://:3000上侦听
假的
真的
错误:发送邮件后无法设置邮件头。
在ServerResponse.OutgoingMessage.setHeader(_http_outgoing.js:350:11)
因此,false
表示在调用我的处理程序之前没有发送头
true
在1000毫秒后出现。它表示在调用异步函数之前发送了头
我希望我的REST客户机(在这种情况下是邮递员)将其请求保持1000毫秒,得到响应并显示“done waiting”
我的理解是,由于我的处理程序没有立即做出响应,所以在某个地方发送了该路由的404
我肯定我错过了一些非常愚蠢的事情,但我在互联网上来回搜索了半天,阅读了教程,却找不到解决办法
我以前偶尔使用express(v2和v3),并在请求处理程序中执行异步操作。我从来没有遇到过这个问题
那么,我错过了什么
nodejs是4.2.1
快车是4.13.3
编辑1
我在Windows7上,64位,节点也是64位的
我在另一台计算机(OSX)上测试了它,它工作得很好。我不懂。我搜索了全球安装的其他版本的express,但似乎什么都没有。我尝试了其他端口,但没有成功。您确定这是正确的版本吗?我复制和粘贴你的代码,所有的作品,没有任何问题。我使用的版本与你上面描述的相同。是的,我确定。刚刚又查了一遍。我使用的是Win 7 64位,nodejs也是64位,Node 4.1.2在Windows 10/OS X 10.11下运行正常。您确定是正确的版本吗?我复制和粘贴你的代码,所有的作品,没有任何问题。我使用的版本与你上面描述的相同。是的,我确定。刚刚又查了一遍。我使用的是Win7 64位,nodejs也是64位,Node4.1.2,在Windows 10/OS X 10.11下,所有操作都正常。