gpt4 book ai didi

javascript - Express.js - 对每个 HTTP 请求执行函数

转载 作者:行者123 更新时间:2023-12-03 04:36:48 25 4
gpt4 key购买 nike

我的本​​地 Node.js 服务器上有一个函数 unzip(),它从 AWS CloudFront URL 下载 .json.gz 文件。当服务器使用 node app.js 运行时,将其解压缩为 .json

在响应路由之前加载该 json 文件中的帖子 -

app.all('*', function(req, res, next){
fs.readFile('s3posts.json', function(err, data){
res.locals.posts = JSON.parse(data);
next();
});
});

问题在于,当服务器开始运行时,文件就会被下载并解压缩,并且只要服务器运行,就会向用户提供相同的数据。除非重新启动服务器,否则不会重新下载该文件。因此,对该数据的任何更改只有在重新启动后才会反射(reflect)出来。

我尝试在 fs.readFile() 之前调用上述 app.all() 路由内的 unzip() 函数code> 函数从 json 文件读取,但当我请求任何页面时会抛出错误 -

undefined:1
undefined
^

SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
at ReadFileContext.callback (/Users/Anish/Workspace/NodeJS/unzipper/app.js:48:27)
at FSReqWrap.readFileAfterOpen [as oncomplete] (fs.js:359:13)

当我查看目录时,我发现它下载了文件,但无法解压缩。即使下载的文件已损坏且无法手动解压缩。

注意 - 如果文件放置在 app.all() 之外,则该文件可以正常下载、解压缩并正常运行。

如何根据用户的每个请求下载并解压缩文件?

最佳答案

我建议阅读 https://expressjs.com/en/guide/using-middleware.html 中有关中间件的内容

app.use(function(request)...应该帮助您处理所有请求,无论路由如何。

关于javascript - Express.js - 对每个 HTTP 请求执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43262618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com