Javascript NodeJS同时使用node static和restify

Javascript NodeJS同时使用node static和restify,javascript,node.js,restify,node-static,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

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

您可以通过将第二个get移到第一个get之前来确保捕获api get调用。原因是您的api调用路由已经与第一个模式匹配。

您可以通过将第二个get移动到第一个get之前来确保捕获api get调用。原因是您的api调用路由已经与第一个模式匹配。

节点static正在调用next,但出现错误,这意味着它永远不会向其他处理程序屈服

您可以将其他处理程序移到节点静态之上,或者通过截取其回调来忽略其错误


我在这里做了一个工作版本:

节点static调用next时出错,这意味着它永远不会屈服于其他处理程序

您可以将其他处理程序移到节点静态之上,或者通过截取其回调来忽略其错误


我在这里制作了一个工作版本:

您可以检查标题,看看在尝试命中api时发生了什么,和/或在api方法上设置断点,看看它是否被命中。I console.log记录了/api get调用,但它从未到达。除此之外,它只是超时。当无法提供文件时,nstatic serve是否使用next?否则,您必须将第二个get移到第一个get之前。您可以检查标头,查看在尝试命中api时发生的情况,和/或在api方法上设置断点,查看是否命中。I console.loged了/api get调用,但它从未到达。除此之外,它只是超时。当无法提供文件时,nstatic serve是否使用next?否则你就得在第一个球之前移动第二个球。