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