2013-04-10 2 views
1

Я создаю простое тестирование платформу для приложения и имеют следующие установки коды, как мой server.js файл в корне моего приложения:NodeJS с использованием узлов статического и restify вместе

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, он просто зависает и уходит. Представьте себе, что мне не хватает чего-то глупого, любая помощь будет очень признательна.

+0

Вы можете проверить заголовок, чтобы увидеть, что происходит, когда вы пытаетесь попасть в API и/или поставить точку останова на ваш метод апи, чтобы увидеть, если он когда-либо получает удар. –

+0

Я 'console.log получил'/api' get call, и он просто так и не дошел до него. Кроме того, это просто время. – Fluidbyte

+2

Использует ли nstatic 'serve'' next', когда файл не может быть подан? В противном случае вам придется переместить второй до первого. – lib3d

ответ

2

Вы можете убедиться, что вызов api get поймал, переместив второй get перед первым. Причина в том, что ваши маршруты маршрутов api уже совпадают с первым шаблоном.

3

node-static вызывает следующую ошибку с ошибкой, что означает, что она никогда не уступает другим обработчикам.

Вы можете переместить других обработчиков выше узла-статического или проигнорировать его ошибки, перехватив его обратный вызов.

Я сделал рабочую версию здесь: http://runnable.com/UWXHRONG7r1zAADe