У меня есть облачная функция Firebase, которая вызывает IBM Watson для получения токена. Я обновляю его со старой аутентификации имени пользователя / пароля до текущей аутентификации IAM.
Вот код из документации IBM :
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
и обновил все свои модули узлов.
Специфическая строка c, которая вызывает ошибку:
const watson = require('ibm-watson');
Когда я закомментирую эту строку, функции развертываются без ошибка. К сожалению, функция не запускается. : -)
Эта строка не вызывает ошибку развертывания:
const { IamAuthenticator } = require('ibm-watson/auth');
Я использую IBM Watson в других облачных функциях Firebase в том же файле index.js
. Эти строки из других функций не вызывают ошибок развертывания:
let TextToSpeechV1 = require('ibm-watson/text-to-speech/v1');
...
var LanguageTranslatorV3 = require('ibm-watson/language-translator/v3');
Кажется, проблема в том, что требование родительского каталога ibm-watson
не выполняется, но подкаталоги родительского каталога работают. Есть предложения?