NodeJS使用node-static和restify在一起

时间:2013-04-10 20:06:51

标签: javascript node.js restify node-static

我正在为应用创建一个简单的测试平台,并将以下代码设置为我的应用根目录中的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时,它只会挂起并超时。想象一下,我在这里错过了一些愚蠢的东西,任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

您可以通过在第一个get之前移动第二个{{1}}来确保api get call被捕获。原因是你的api呼叫路由已经与第一种模式相匹配。