我使用IBM Cloud functions请求IBM Watson Discovery的一些结果。关于如何调用这一点,有一个非常好的GitHub回购这里。但是,在设置函数中的操作时,出现一个带有消息的错误,无法找到模块‘ibm/auth’。我理解消息的意思,但是如果您检查GitHub回购,您会发现我应用的步骤完全相同。我的IBM函数代码是:
case 'doc_info':
var user_input = params.user_input;
const watson = require('ibm-watson/sdk');
const { CloudantV1 } = require('@cloudant/cloudant');
const DiscoveryV1 = require('ibm-watson/discovery/v1');
const { IamAuthenticator } = require('ibm-watson/auth');
//const { IamAuthenticator } = require('ibm-cloud-sdk-core');
try {
const discovery = new DiscoveryV1({ // Initializing Discovery
version: '2020-11-24',
authenticator: new IamAuthenticator({
apikey: params.apiKeyDisco,
}),
serviceUrl: params.urlDisco,
});
const cloudant = new CloudantV1({ // Initializing CloudantV1
authenticator: new IamAuthenticator({
apikey: params.apiKeyCloudant
})
});
cloudant.setServiceUrl(params.urlCloudant);
// ...
return {
answer: "Simple test"
};
} catch (err) {
console.log(err)
return Promise.reject({
statusCode: 500,
headers: { 'Content-Type': 'application/json' },
body: { message: err.message },
});
}
break;我甚至尝试过从ibm核心包调用IamAuthenticator,但是错误是IamAuthenticator不是构造函数。我们怎样才能解决这个问题?
发布于 2021-03-08 07:01:25
请看这里的IBM函数中可用的运行时环境。根据Node.js版本的不同,IBM有不同的版本。正如在文档中所述,Node.js 12运行时具有您正在寻找的具有IAM身份验证功能的较新的SDK。Node.js 10运行时具有V4.xIBMWatson SDK。
因此,您需要使用旧的(记录在案的)身份验证方法,或者移动到Node.js 12运行时。
如果您使用旧的用户名/密码身份验证,并且只有一个IAM密钥,请使用iamapikey作为用户名,使用API密钥作为密码。
https://stackoverflow.com/questions/66515480
复制相似问题