需要的动态变量

我怀疑我是否读取了带有“require”的 JSON 文件,并且这个 JSON 文件更新后也会更改代码中设置的变量?


这是一个例子——这是不断更新的 json 文件


context = {

id: 45121521541, //changing value

name: node,

status: completed,

}

我通过这段代码得到了这个 JSON 的值


var context = require ('./ context.json')

代码会不断更新 json 并且数据会发生变化,当代码处于活动状态时,我将通过“require”获取 JSON 的值,这是可能的,或者 require 不允许我?


炎炎设计
浏览 92回答 1
1回答

郎朗坤

您应该使用fs.readFileSync()它而不是require()- 当您第一次使用 require 时,它会将其提取到模块 require 缓存中,后续调用将从那里加载,因此您不会看到及时的更新。如果您从中删除密钥,require.cache它也会触发重新加载,但总体而言效率会低于仅读取文件。includingfs.readFileSync()每次执行时都会同步读取文件内容(阻塞)。您可以结合自己的缓存/等来提高效率。如果您可以异步执行此操作,那么 usingfs.readFile()是更可取的,因为它是非阻塞的。const fs = require('fs');// your code// load the file contents synchronouslyconst context = JSON.parse(fs.readFileSync('./context.json')); // load the file contents asynchronouslyfs.readFile('./context.json', (err, data) => {  if (err) throw new Error(err);  const context = JSON.parse(data);});// load the file contents asynchronously with promisesconst 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 cachingdelete require.cache['/full/path/to/context.json'];const context = require('./context.json'); 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript