部署时修改文件结构的代码问题



有一个站点包含我要在我的应用程序中解析的数据。JSON 文件位于 tar .gz 中。我的代码向该站点发出请求,下载 tar.gz 文件,提取 JSON,然后解析信息。

到目前为止,这就是代码的外观,但我尚未将其添加到我的后端中。

const fs = require("fs");
const rp = require("request-promise");
const tar = require("tar");
(async function main() {
try {
const url = "https://statics.koreanbuilds.net/bulk/latest.tar.gz";
const arcName = "latest.tar.gz";
const response = await rp.get({ uri: url, encoding: null });
fs.writeFileSync(arcName, response, { encoding: null });
tar.x({ file: arcName, cwd: ".", sync: true });
let text = fs.readFileSync("latest1.json");
let fullText = JSON.parse(text);
let championsObj = {};
// Following logic that parses the json file
.......
} catch (err) {
console.error(err);
}
})();

我计划将解析的JSON对象存储到MongoDB中。我还想执行上述操作,每 24 小时更新一次 JSON 和 tar.gz 文件。

我担心这些操作在部署此项目时会产生许多后果。这是我第一次部署全栈应用程序,我几乎可以肯定,代码弄乱了整个项目的文件结构会导致一些问题。但我只是不知道我到底应该担心什么以及如何解决它。我相信 CORS 会有问题,但我更担心应用程序实际工作和正确更新。整个应用程序都是使用 MERN 堆栈制作的。

当您在 VPS 上部署代码时,保存和读取文件系统是完全可以的。当您部署到像 Heroku 这样的 PaaS 时,您必须记住文件系统是短暂的,这意味着您在每次部署时都会获得一个新的新副本。不属于版本控制的文件将在发布后消失。您不能依赖文件系统进行存储,您必须使用外部服务来存储图像/文件(例如:AWS S3(。

话虽如此,您的代码将在 Heroku 上运行,因为您可以立即保存和读取文件。我要做的一件事是将日期/时间戳添加到下载的文件名中,这样当具有该名称的文件已经存在时,您就不会在第二次运行时收到错误。您还可以研究在内存中提取存档的可能性,这样您就不必使用文件系统。

除此之外,您不必担心。CORS在这方面无关紧要。

最新更新