1 回答
TA贡献1921条经验 获得超9个赞
您应该使用fs.readFileSync()
它而不是require()
- 当您第一次使用 require 时,它会将其提取到模块 require 缓存中,后续调用将从那里加载,因此您不会看到及时的更新。如果您从中删除密钥,require.cache
它也会触发重新加载,但总体而言效率会低于仅读取文件。
includingfs.readFileSync()
每次执行时都会同步读取文件内容(阻塞)。您可以结合自己的缓存/等来提高效率。如果您可以异步执行此操作,那么 usingfs.readFile()
是更可取的,因为它是非阻塞的。
const fs = require('fs');
// your code
// load the file contents synchronously
const context = JSON.parse(fs.readFileSync('./context.json'));
// load the file contents asynchronously
fs.readFile('./context.json', (err, data) => {
if (err) throw new Error(err);
const context = JSON.parse(data);
});
// load the file contents asynchronously with promises
const context = await new Promise((resolve, reject) => {
fs.readFile('./context.json', (err, data) => {
if (err) return reject(err);
return resolve(JSON.parse(data));
});
});
如果你想从中删除require.cache你可以这样做。
// delete from require.cache and reload, this is less efficient...
// ...unless you want the caching
delete require.cache['/full/path/to/context.json'];
const context = require('./context.json');
添加回答
举报