Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 截取express.js中的静态文件请求_Node.js_Express - Fatal编程技术网

Node.js 截取express.js中的静态文件请求

Node.js 截取express.js中的静态文件请求,node.js,express,Node.js,Express,我有一个节点服务器,为公用文件夹中的静态文件提供服务,如下所示: var app = express(); app.listen(port); app.use(compression()); app.use(express.static(__dirname + '/PUBLIC')); 有一个json文件,比如说important.json,位于/PUBLIC文件夹中。这是一个静态文件 现在,我想截取这个/PUBLIC/important.json的请求,这样我就可以通过编程返回一个随机的js

我有一个节点服务器,为公用文件夹中的静态文件提供服务,如下所示:

var app = express();
app.listen(port);
app.use(compression());
app.use(express.static(__dirname + '/PUBLIC'));
有一个json文件,比如说important.json,位于/PUBLIC文件夹中。这是一个静态文件

现在,我想截取这个/PUBLIC/important.json的请求,这样我就可以通过编程返回一个随机的json结构

以下情况均不适用:

app.get('/PUBLIC/important.json', function(req, res) {
    console.log("caught1!")
});

app.get(__dirname + '/PUBLIC/important.json', function(req, res) {
    console.log("caught2!")
});

app.get('important.json', function(req, res) {
    console.log("caught3!")
});

我怎样才能截获对那个特定静态文件的请求呢?

您能告诉我们更多关于您的堆栈的信息吗

您是否使用nginx/apache代理将流量传递到nodejs服务器

你只是在用“node app.js”运行你的应用程序吗

让我们尝试在应用程序中添加以下简单路由:

app.get('/', function (req, res) {
  res.send('Hello World!');
});
并尝试通过删除URI参数来访问它?“你好世界”出现了吗

我只是想确定流量是由你的节点应用程序处理的


您的路由定义应该适用于您的实际请求。

所述。静态
中间件不使用
next()
调用下一个中间件,定义顺序很重要。在使用
express.static
之前,必须定义自己的中间件

app.get('/PUBLIC/important.json', (req, res, next) => {
    console.log('caught');
    next();
});
app.use(express.static(__dirname + '/PUBLIC'));

不。hello world将不会显示,公用文件夹中的索引页将像往常一样显示。important.json是您想对公众隐藏的内容吗?因为如果是的话,你不能把它放在公共文件夹里。无论您如何努力,总会有一种方法绕过您的中间件,最终将提供文件。(我首先想到的是unicode字符串,它规范化为“important.json”)不,它不是一个秘密文件。它过去是一个静态json,几乎不会改变,但由于需求的变化,我们希望json数据部分是动态的,所以我尝试截取它,并以编程方式处理该请求