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}`)
})
我正在开发一个 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}`)
})