aws-sdk-js для перевода результатов клиента ошибка «не удается прочитать свойство 'byteLength' of undefined»

Я запускаю клиент перевода AWS SDK V3 в приложении Node.js, чтобы переводить предложение. Это мой код:

      const { TranslateClient, CreateParallelDataCommand } = require("@aws-sdk/client-translate");

const client = new TranslateClient({ 
  region: "ap-shouteast-1",
  credentials: {
    accessKeyId: process.env.AWS_ACCES_KEY_ID, 
    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
  }
});

const params = {
  Text: "StackOverflow is very good.",
  SourceLanguageCode: "en",
  TargetLanguageCode: "id"
};

const command = new CreateParallelDataCommand(params);

function translate() {
  return client.send(command)
    .then((data) => {
      console.log(data);
    })
    .catch((reason) => {
      console.log(reason);
    })
}

translate();

Я выполнил инструкцию из документации .

Но результат таков.

      TypeError: Cannot read property 'byteLength' of undefined
    at Object.fromArrayBuffer (\projectDir\node_modules\@aws-sdk\util-buffer-from\dist-cjs\index.js:6:60)
    at castSourceData (\projectDir\node_modules\@aws-sdk\hash-node\dist-cjs\index.js:29:31)
    at Hash.update (\projectDir\node_modules\@aws-sdk\hash-node\dist-cjs\index.js:12:26)
    at hmac (\projectDir\node_modules\@aws-sdk\signature-v4\dist-cjs\credentialDerivation.js:36:10)
    at Object.getSigningKey (\projectDir\node_modules\@aws-sdk\signature-v4\dist-cjs\credentialDerivation.js:11:29)
    at SignatureV4.getSigningKey (\projectDir\node_modules\@aws-sdk\signature-v4\dist-cjs\SignatureV4.js:139:39)
    at SignatureV4.signRequest (\projectDir\node_modules\@aws-sdk\signature-v4\dist-cjs\SignatureV4.js:98:73)
    at async \projectDir\node_modules\@aws-sdk\middleware-signing\dist-cjs\middleware.js:13:18
    at async StandardRetryStrategy.retry (\projectDir\node_modules\@aws-sdk\middleware-retry\dist-cjs\StandardRetryStrategy.js:51:46)
    at async \projectDir\node_modules\@aws-sdk\middleware-logger\dist-cjs\loggerMiddleware.js:6:22 {
  '$metadata': { attempts: 1, totalRetryDelay: 0 }
}

В чем причина этой проблемы и как ее решить?

1 ответ

Решение

Я нашел решение. Мы можем использовать от @aws-sdk/client-translate скорее, чем CreateParallelDataCommandдля построения команды. Эти классы используют разные форматы входных параметров. Параметр, который я использовал в программе-примере, работает только для TranslateTextCommand. Итак, исправление заключается в следующем.

      const { TranslateClient, TranslateTextCommand } = require("@aws-sdk/client-translate");

// ...

const params = {
  Text: "StackOverflow is very good.",
  SourceLanguageCode: "en",
  TargetLanguageCode: "id"
};

const command = new TranslateTextCommand(params)

// ...
Другие вопросы по тегам