【Serverless】HarmonyOS 鸿蒙Next 云函数中调用云函数报错10602
【Serverless】HarmonyOS 鸿蒙Next 云函数中调用云函数报错10602 【问题描述】
开发者希望在云函数代码中调用别的云函数,于是参考官方文档,编写Node.js的函数代码,导入到AGC控制台进行测试,返回结果总是会报下面这个错误。
{ "code": 180000, "message": "Call handler error: 10602: agc client name already exist" }
开发者的函数代码如下:
const agconnect = require('@agconnect/common-server');
const { AGCFunction } = require("@hw-agconnect/function-server");
let path = require('path');
let api_client_path = path.join(__dirname, "agc-apiclient.json");
const agcClient = agconnect.AGCClient.getInstance();
agconnect.AGCClient.initialize(agconnect.CredentialParser.toCredential(api_client_path));
let agcFunction = new AGCFunction(agcClient);
let myHandler = function(event, context, callback, logger) {
let callable= agcFunction.wrap("gettman","$latest");
let result=callable.call()
//send response
callback({"res":result});
};
module.exports.myHandler = myHandler;
【问题分析】
出现10602的错误一般是因为AGCClient在Node.js中初始化一次后不会清除缓存,在后续测试时会出现重复初始化的情况便会报AGCClient已存在的错误,所以在初始化前做个判断,如果存在AGCClient实例便不再初始化。做了判断后该代码还存在另外几个问题,也在下图标注了出来:
【解决方案】
如果要在云函数中调用云函数,需要注意以下几点:
- 测试函数时AGCClient实例需要判断是否已经存在,不存在则初始化。
var agcFunction = new AGCFunction();
这个类传参应该是个字符串,或者为空,不能传agcClient对象call()
需要异步。
改进后的函数代码如下:
const agconnect = require('@agconnect/common-server');
const { AGCFunction } = require("@hw-agconnect/function-server");
let path = require('path');
let credentialPath = path.join(__dirname, 'agc-apiclient.json');
let credential = agconnect.CredentialParser.toCredential(credentialPath);
let agcClient;
try {
agcClient = agconnect.AGCClient.getInstance();
} catch {
agconnect.AGCClient.initialize(credential);
agcClient = agconnect.AGCClient.getInstance();
}
let myHandler = async function(event, context, callback, logger) {
var agcFunction = new AGCFunction();
let callable= agcFunction.wrap("test","$latest");
let result = callable.call({}).then(res => {
callback({"res":res});
}).catch(error => {
callback({"error":error});
});
};
module.exports.myHandler = myHandler;
更多关于【Serverless】HarmonyOS 鸿蒙Next 云函数中调用云函数报错10602的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
找不到@agconnect/common-server这模块。
更多关于【Serverless】HarmonyOS 鸿蒙Next 云函数中调用云函数报错10602的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
请问你解决了吗
没有的,提了工单也没解决,感觉云☁函数里调用其它云函数应该暂时不可行。
报错如下,导入不了云函数以外的模块。
const agconnect = require(’@agconnect/common-server’); const { AGCFunction } = require("@hw-agconnect/function-server");
这两个包在测试云函数时,提示找不到相应模块,想问问最新的云函数2.0支持吗?有没有相关文档可以查询怎么使用吗?
好奇问问,如果想从现在的云函数,传参给被调用的云函数,那应该怎么写呢?
是读取Event的参数,传到AGCFunction吗?如下面
var agcFunction = new AGCFunction(event.year);
针对帖子标题中提到的HarmonyOS(鸿蒙)Next云函数中调用云函数报错10602的问题,这里提供可能的解决方案,不涉及Java或C语言内容。
报错10602通常指示某种资源限制或权限问题。在鸿蒙的云函数环境中,这种错误可能由以下几个原因引起:
-
权限配置不当:检查被调用的云函数是否具有被其他云函数调用的权限。在鸿蒙的云服务平台上,确保相关权限策略已正确配置。
-
资源配额超限:每个云函数账户或项目都有一定的资源使用配额,包括调用次数、执行时间等。检查是否已达到或超过这些配额限制。
-
网络或依赖问题:确保云函数间的网络调用畅通无阻,且所有依赖服务均正常运行。
-
代码错误:虽然不直接指向代码问题,但确认调用代码逻辑无误,参数传递正确,避免因代码错误间接导致权限或资源使用异常。
解决这类问题通常需要登录鸿蒙云服务平台,检查云函数的配置、权限设置及资源使用情况。根据具体错误信息调整配置或优化代码。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,