开发者社区 > 云原生 > Serverless > 正文

函数计算中,为啥我从环境变量读到了阿里云的redis配置,在nodeJs环境中调用报了这个错?

函数计算中,为啥我从环境变量读到了阿里云的redis配置,在nodeJs环境中调用报了这个错?
2024-01-04 19:15:272024-01-04 19:15:27 1-6596934e-16bd434e-16e4d19c070d [error] Error: connect ECONNREFUSED 127.0.0.1:6379
at node_internal_captureLargerStackTrace (node:internal/errors:465:5)
at
node_internal_exceptionWithHostPort (node:internal/errors:643:12)
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16)
代码如下:exports.initialize = async (context) => {
console.log("initialize");
const type_env = process.env.TYPE;
console.log(type: ${type_env});

if (type_env === "redis") {
    const REDIS_HOST = process.env.REDIS_HOST;
    const REDIS_PORT = parseInt(process.env.REDIS_PORT, 10) || 6379;
    const REDIS_PASSWORD = process.env.REDIS_PASSWORD;

    if (!REDIS_HOST || !REDIS_PASSWORD) {
        throw new Error("REDIS_HOST, REDIS_PORT, REDIS_PASSWORD must be set");
    }
    redis_pool = redis.createClient({
        host: REDIS_HOST,
        pass: REDIS_PORT,
        password: REDIS_PASSWORD,
        maxRetriesPerRequest: 3,
        enableReadyCheck: true,
    });

    // 使用promisify处理异步操作
    redis_pool.connect = promisify(redis_pool.connect).bind(redis_pool);
    await redis_pool.connect();
    if (await redis_pool.ping() === 'PONG') {
      console.log('Connected to Redis successfully');
    } else {
      console.error('Failed to connect to Redis');
    }
    console.log("initialize redis_pool");
}

};

展开
收起
多麻辣哦 2024-01-09 22:20:26 26 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    从错误日志来看,问题出在连接Redis时出现了ECONNREFUSED错误。这意味着你的应用程序无法连接到指定的Redis服务器。这可能是由于以下原因:

    1. Redis服务器没有运行。请确保Redis服务器正在运行,并且可以从你的应用程序所在的机器上访问。

    2. Redis服务器的地址或端口配置错误。请检查你的环境变量中Redis服务器的地址和端口是否正确。

    3. 防火墙设置阻止了连接。请检查防火墙设置,确保允许你的应用程序访问Redis服务器。

    4. 网络问题。请检查你的网络连接,确保没有任何阻止连接的问题。

    你可以尝试以下步骤来解决这个问题:

    1. 检查Redis服务器是否正在运行。你可以在命令行中使用redis-cli ping命令来测试连接。

    2. 检查环境变量中的Redis服务器地址和端口是否正确。

    3. 检查防火墙设置,确保允许你的应用程序访问Redis服务器。

    4. 检查网络连接,确保没有任何阻止连接的问题。

    2024-01-11 13:14:13
    赞同 展开评论 打赏
  • FC nodejs 标准 runtime 要 callback 才行
    exports.initializer = (context, callback) => {
    console.log('initializing');
    callback(null, '');
    };
    ——此回答整理自钉群:阿里函数计算官网客户

    2024-01-09 23:19:47
    赞同 展开评论 打赏

快速交付实现商业价值。

相关产品

  • 函数计算
  • 相关电子书

    更多
    Redis在唯品会的应用实践——架构演进与功能定制 立即下载
    微博的Redis定制之路 立即下载
    云数据库Redis版的开源之路 立即下载