Node.js Express:仅在服务器启动时加载 JSON 文件

Node.js Express: loading JSON file only on server startup

我正在开发一个 express.js 应用程序,它应该加载一个 API 定义文件(很可能是 JSON 格式的 swagger 文件)。目前我已经创建了一个中间件,它应该通过 fs.readFile()JSON.parse() 解析 JSON 文件,以检查用户访问某些资源的权限。所以基本上 每次 执行请求时,我的中间件都会获取相同的 JSON 文件并解析它,这显然是一项额外的工作。是否可以加载此 JSON 文件,将其解析并存储到某种全局配置中的某个内部对象,并重新加载它以防它被修改以免对每个请求执行相同的操作?

当然,你可以创建一个这样的函数(伪代码):

var jsonData=null;

function getConfiguration() {
  if (!jsonData) {
    jsonData= readFileSync(...);
  }
  return jsonData;
}

module.exports.getConfiguration=getConfiguration;

或者,正如@AleksandrM 评论的那样,您可以 "import" 使用 require

这对我有用,与这里的答案非常一致

let config_file = path.join(__dirname, 'config.json')
let configJSON = {}


function getConfiguration() {
    jsonfile.readFile(config_file, function (err, obj) {
    if (err) console.error(err)
    console.dir(obj)
    configJSON = obj
})}

然后在应用程序启动时

app.listen(port, () => {
  getConfiguration()
  console.log(`App listening at http://localhost:${port}`)
})