Как решить эту ошибку: Не удается найти модуль 'ibm-watson' - PullRequest
2 голосов
/ 06 февраля 2020

Я установил ibm-watson с помощью команды "npm install ibm-watson". Я вижу папку и ее файл в папке node_modules, но все равно показываю эту ошибку. Версия узла - v10.15.3

const watson = require('ibm-watson');
const { IamAuthenticator } = require('ibm-watson/auth');
const { BasicAuthenticator } = 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
  }
});

Другие модули импортируются нормально, Только этот модуль не импортирует.

internal/modules/cjs/loader.js:584
    throw err;
    ^

Error: Cannot find module 'ibm-watson'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:582:15)
    at Function.Module._load (internal/modules/cjs/loader.js:508:25)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous>

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Я столкнулся с той же проблемой.

Прочитав код, я понял.

Существует только файл sdk.ts, а не файл index.ts.

https://github.com/watson-developer-cloud/node-sdk

// const watson = require('ibm-watson');
const watson = require('ibm-watson/sdk');

Но я все еще получил ошибку .

В конце концов это сработало, если я написал следующее

import AuthorizationV1 from 'ibm-watson/authorization/v1'
import { IamAuthenticator } from 'ibm-watson/auth'

const apikey = '********'
const authorization = new AuthorizationV1({
  url: 'https://iam.cloud.ibm.com/identity/token',
  authenticator: new IamAuthenticator({ apikey }),
})

authorization.getToken(function (err, token) {
  if (!token) {
    console.log('error: ', err);
  } else {
    // Use your token here
  }
});

Но есть проблема с CORS. Я больше не знаю.

enter image description here

Ответ был написан здесь. Мне нужно сделать это на стороне сервера

https://github.com/watson-developer-cloud/node-sdk/issues/884#issuecomment -515050023

0 голосов
/ 06 февраля 2020

Когда вы получаете токен, я догадываюсь, что вы используете Speech To Text. Как отмечается в комментариях, ошибочная строка - const watson = require('ibm-watson');, потому что она не экспортируется. Вместо этого вы должны использовать в соответствии с документацией API - https://cloud.ibm.com/apidocs/speech-to-text/speech-to-text?code=node#authentication:

const SpeechToTextV1 = require('ibm-watson/speech-to-text/v1');
const { IamAuthenticator } = require('ibm-watson/auth');
const { IamTokenManager } = require('ibm-watson/auth'); 

Если вы используете не STT, то другие службы работают так же, когда требуется ibm-watson. Ссылки на документы API можно найти здесь - https://cloud.ibm.com/apidocs

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