我正在为应用创建一个简单的测试平台,并将以下代码设置为我的应用根目录中的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
时,它只会挂起并超时。想象一下,我在这里错过了一些愚蠢的东西,任何帮助都会非常感激。
答案 0 :(得分:3)
node-static正在调用next并出现错误,这意味着它永远不会屈服于其他处理程序。
您可以将其他处理程序移到node-static之上,或者通过拦截它的回调来忽略它的错误。
我在这里制作了一个工作版:http://runnable.com/UWXHRONG7r1zAADe
答案 1 :(得分:2)
您可以通过在第一个get
之前移动第二个{{1}}来确保api get call被捕获。原因是你的api呼叫路由已经与第一种模式相匹配。