JavaScript-使用require读取JSON文件所得到的结果与fs.readFileSync不同

时间:2019-06-19 06:18:11

标签: javascript node.js json require fs

我遇到了一个问题,使我觉得require在JavaScript中的工作方式我缺少了。基本上,如果我使用require来读取JSON文件,则会得到与使用fs.readFileSync不同的结果。

我从一个具有以下内容的JSON文件开始:

{"text":"old text"}

我首先使用requirefs.readFileSync读取文件,并且每个文件都得到相同的结果。然后,我使用fs.writeFileSync更新文件,并使用requirefs.readFileSync再次读取文件,但是更新后得到的结果不同。

请务必注意,我需要从函数内部获取文件。我希望这能在每次函数调用时分别导入文件,但这显然不是正在发生的事情。只是想知道是否有人可以确切解释正在发生的事情。

const fs = require('fs');
const textPath = './test.json';

const oldTextJSON = getText();  // prints as "old text"
const oldTextRead = JSON.parse(fs.readFileSync(textPath)).text;  // prints as "old text"

fs.writeFileSync(textPath, JSON.stringify({
  text: "new text"
}));

const newTextJson = getText();  // prints as "old text"
const newTextRead = JSON.parse(fs.readFileSync(textPath)).text;  // prints as "new text"

function getText() {
  return require(textPath).text;
}

1 个答案:

答案 0 :(得分:2)

希望这一行解释kubectl rollout undo deployment/foo 的特征。

require

无论调用多少次,基本上都需要从缓存中读取内容。