函数计算中,为啥我从环境变量读到了阿里云的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");
}
};
从错误日志来看,问题出在连接Redis时出现了ECONNREFUSED错误。这意味着你的应用程序无法连接到指定的Redis服务器。这可能是由于以下原因:
Redis服务器没有运行。请确保Redis服务器正在运行,并且可以从你的应用程序所在的机器上访问。
Redis服务器的地址或端口配置错误。请检查你的环境变量中Redis服务器的地址和端口是否正确。
防火墙设置阻止了连接。请检查防火墙设置,确保允许你的应用程序访问Redis服务器。
网络问题。请检查你的网络连接,确保没有任何阻止连接的问题。
你可以尝试以下步骤来解决这个问题:
检查Redis服务器是否正在运行。你可以在命令行中使用redis-cli ping
命令来测试连接。
检查环境变量中的Redis服务器地址和端口是否正确。
检查防火墙设置,确保允许你的应用程序访问Redis服务器。
检查网络连接,确保没有任何阻止连接的问题。
FC nodejs 标准 runtime 要 callback 才行
exports.initializer = (context, callback) => {
console.log('initializing');
callback(null, '');
};
——此回答整理自钉群:阿里函数计算官网客户
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。