Узловые модули с подкаталогами: «Триггеры разбора ошибок: не удается найти модуль« ibm-watson »» - PullRequest
0 голосов
/ 11 марта 2020

У меня есть облачная функция 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:

enter image description here

Я переустанавливал 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 не выполняется, но подкаталоги родительского каталога работают. Есть предложения?

1 Ответ

1 голос
/ 12 марта 2020

Это как и ожидалось. Если вы посмотрите на репозиторий GitHub для ibm-watson - https://github.com/watson-developer-cloud/node-sdk - вы заметите, что нет примера, требующего библиотеки верхнего уровня. Это останавливает вас от загрузки полной библиотеки, когда вам нужно только добавить небольшой подкомпонент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...