【问题标题】:aws-sdk-js for translate client results an error "cannot read property 'byteLength' of undefined"用于翻译客户端的 aws-sdk-js 导致错误“无法读取未定义的属性 'byteLength'”
【发布时间】:2021-11-08 13:50:11
【问题描述】:

我在 Node.js 应用程序中运行 AWS SDK V3 Translate Client 来翻译句子。这是我的代码:

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

const client = new TranslateClient({ 
  region: "ap-southeast-1",
  credentials: {
    accessKeyId: process.env.AWS_ACCESS_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();

我已按照the documentation的指示进行操作。

但是,结果如下。

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 }
}

这个问题的原因是什么,我该如何解决?

【问题讨论】:

  • 尝试重新安装aws-sdk 模块 - 可以吗?如果不是 - 请仔细检查您的访问密钥 ID 和密钥

标签: amazon-web-services aws-sdk-js aws-sdk-js-v3 amazon-translate


【解决方案1】:

我找到了解决方案。我们可以使用来自@aws-sdk/client-translateTranslateTextCommand 而不是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)

// ...

【讨论】:

    猜你喜欢
    • 2023-02-01
    • 2020-08-16
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2021-10-10
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多