You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NodeJS编写的Azure Function中读取同目录下的JSON配置文件

问题根因

你遇到的异常是两个原因共同导致的:

  1. fs.readFile 是异步回调方法,回调函数内部的return值不会赋值给外层的configAPI变量,默认调用fs.readFile的返回值是undefined
  2. 你没有等待文件读取完成就直接执行了后续的循环和打印逻辑,此时文件还没读取完毕,变量自然没有值

修正方案

你可以直接改用同步读取方法,或者使用Promise版本的异步读取加await等待,以下是两种可行的写法:

写法1:使用同步读取(最简便,适合小配置文件场景)

module.exports = async function (context, req) {
    const fs = require('fs');
    const path = require('path').join(context.executionContext.functionDirectory, 'configAPI.json');
    let configAPI;
    try {
        const data = fs.readFileSync(path, 'utf-8');
        configAPI = JSON.parse(data);
    } catch (err) {
        context.log('读取配置文件失败:', err);
        // 可在这里补充异常返回逻辑
        return;
    }

    for (let file_index=0; file_index < configAPI.length; file_index++){
        // 执行业务逻辑
    }
    context.log(configAPI);
}

写法2:使用Promise版异步读取加await

module.exports = async function (context, req) {
    const fs = require('fs').promises;
    const path = require('path').join(context.executionContext.functionDirectory, 'configAPI.json');
    let configAPI;
    try {
        const data = await fs.readFile(path, 'utf-8');
        configAPI = JSON.parse(data);
    } catch (err) {
        context.log('读取配置文件失败:', err);
        // 可在这里补充异常返回逻辑
        return;
    }

    for (let file_index=0; file_index < configAPI.length; file_index++){
        // 执行业务逻辑
    }
    context.log(configAPI);
}

额外优化点:用path.join拼接路径替代手动写斜杠,避免不同操作系统路径格式不兼容的问题

内容的提问来源于stack exchange,提问作者abautista

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:18:01