我有一个Firebase Cloud函数,它调用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我的/functions/node_modules目录中安装了ibm-watson:

我重新安装了ibm-watson,并且在我的functions目录中运行了npm install。另外,我运行了npm-check并更新了所有节点模块。
导致错误的特定行是:
const watson = require('ibm-watson');当我注释掉这一行时,函数部署没有错误。不幸的是,该函数不能运行。:-)
该行不会导致部署错误:
const { IamAuthenticator } = require('ibm-watson/auth');我在同一个index.js文件中的其他Firebase Cloud函数中使用IBM Watson。其他函数中的这些代码行不会导致部署错误:
let TextToSpeechV1 = require('ibm-watson/text-to-speech/v1');
...
var LanguageTranslatorV3 = require('ibm-watson/language-translator/v3');问题似乎是需要父目录ibm-watson失败了,但是需要父目录的子目录是可行的。有什么建议吗?
发布于 2020-03-13 00:08:35
这和预期的一样。如果您查看ibm-watson - https://github.com/watson-developer-cloud/node-sdk的GitHub代码库,您会注意到没有需要顶层库的示例。当您只需要拉入一个小的子组件时,这会阻止您拉入整个库。
https://stackoverflow.com/questions/60642525
复制相似问题