我是第一次使用 Node.js。我正在使用node-static提供静态文件,并使用Journey提供路由。不幸的是,这两者似乎相互冲突,我不确定停止冲突的最佳方法。我的服务器如下所示:
var http = require('http');
var nodeStatic = require('node-static');
var journey = require('journey');
var fileServer = new nodeStatic.Server('./public');
var router = new journey.Router;
module.exports = http.createServer(function (req, res) {
router.get('/api').bind(function (req, res) {
res.send(200);
});
var fileServer = new nodeStatic.Server('./public');
var router = new journey.Router;
module.exports = http.createServer(function (req, res) {
router.get('/api').bind(function (req, res) {
res.send(200);
});
req.addListener('end', function () {
fileServer.serve(req, res);
router.handle(req, '', function (result) {
res.writeHead(result.status, result.headers);
res.end(result.body);
});
});
});
问题在于 Journey 路由器发送了 404 响应。我设法使其工作的唯一方法是在end
侦听器中执行此操作:
req.addListener('end', function () {
router.handle(req, '', function (result) {
if (result.status === 404) {
fileServer.serve(req, res);
}
else {
res.writeHead(result.status, result.headers);
res.end(result.body);
}
});
});
但这似乎不是我应该处理的方式。我究竟做错了什么?