我有一个Firebase Cloud Function,它调用IBM Watson获取令牌。我正在将其从旧的用户名/密码身份验证更新为当前的IAM身份验证。
这是来自IBM documentation的代码:
const watson = require('ibm-watson');
const { IamAuthenticator } = require('ibm-watson/auth');
// to get an IAM access Token
const authorization = new watson.AuthorizationV1({
authenticator: new IamAuthenticator({ apikey: 'fakekey-1234' }),});
authorization.getToken(function (err,token) {
if (!token) {
console.log('error: ',err);
} else {
// Use your token here
}
});
运行firebase deploy --only functions
时出现此错误:
Error: Error parsing triggers: Cannot find module 'ibm-watson'
Require stack:
- /Users/TDK/LanguageTwo/functions/index.js
- /Users/TDK/.nvm/versions/node/v13.10.1/lib/node_modules/firebase-tools/lib/triggerParser.js
ibm-watson
已安装在我的/functions/node_modules
目录中:
我重新安装了ibm-watson
,并且在很好的情况下,我在npm install
目录中运行了functions
。另外,我运行了npm-check
并更新了所有节点模块。
引起错误的特定行是:
const watson = require('ibm-watson');
当我注释掉那一行时,功能部署没有错误。不幸的是,该功能无法运行。 :-)
此行不会导致部署错误:
const { IamAuthenticator } = require('ibm-watson/auth');
我在同一index.js
文件中的其他Firebase Cloud Functions中使用IBM Watson。来自其他功能的这些行不会导致部署错误:
let TextToSpeechV1 = require('ibm-watson/text-to-speech/v1');
...
var LanguageTranslatorV3 = require('ibm-watson/language-translator/v3');
问题似乎是要求父目录ibm-watson
失败,但是要求父目录的子目录有效。有什么建议吗?