1

我正在为应用程序创建一个简单的测试平台,并将以下代码设置作为我server.js的应用程序根目录中的文件:

var restify = require('restify'),
    nstatic = require('node-static'),
    fs = require('fs'),
    data = __dirname + '/data.json',
    server = restify.createServer();


// Serve static files
var file = new nstatic.Server('');
server.get(/^\/.*/, function(req, res, next) {
    file.serve(req, res, next);
});


// Process GET
server.get('/api/:id', function(req, res) {
    // NEVER FIRES
});

它完美地提供静态文件,但是,当我尝试调用它时,/api它只是挂起并超时。想象一下,我在这里遗漏了一些愚蠢的东西,任何帮助将不胜感激。

4

2 回答 2

3

node-static 调用 next 时出现错误,这意味着它永远不会屈服于其他处理程序。

您可以将其他处理程序移动到 node-static 之上,或者通过拦截它的回调来忽略它的错误。

我在这里制作了一个工作版本:http ://runnable.com/UWXHRONG7r1zAADe

于 2013-04-10T20:19:22.487 回答
2

您可以通过在get第一个之前移动第二个来确保捕获 api get 调用。原因是您的 api 调用路由已经与第一个模式匹配。

于 2013-04-10T20:14:30.233 回答