2013-04-10 20 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和/或將斷點在你的API方法,看它是否曾經被打的去。 – 2013-04-10 20:08:50

+0

我''console.log'給''/ api'打電話,它永遠不會到達它。除此之外,它只是超時。 – Fluidbyte 2013-04-10 20:10:19

+2

當文件無法提供時,nstatic'serve'是否使用'next'?否則,你必須在第一個之前移動第二個。 – lib3d 2013-04-10 20:12:16

回答

2

您可以確保在第一次前將第二個get移動到api上。原因是你的api呼叫路由已經被第一種模式匹配。

3

節點靜態正在調用下一個錯誤,這意味着它永遠不會屈服於其他處理程序。

您可以將其他處理程序移動到node-static之上或通過攔截回調來忽略它的錯誤。

我在這裏做一個工作版本:http://runnable.com/UWXHRONG7r1zAADe