我遇到了一个问题,使我觉得require
在JavaScript中的工作方式我缺少了。基本上,如果我使用require
来读取JSON文件,则会得到与使用fs.readFileSync
不同的结果。
我从一个具有以下内容的JSON文件开始:
{"text":"old text"}
我首先使用require
和fs.readFileSync
读取文件,并且每个文件都得到相同的结果。然后,我使用fs.writeFileSync
更新文件,并使用require
和fs.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;
}
答案 0 :(得分:2)
希望这一行解释kubectl rollout undo deployment/foo
的特征。
require
无论调用多少次,基本上都需要从缓存中读取内容。