У меня возникает проблема, из-за которой я думаю, что мне чего-то не хватает в том, как 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;
}