![](/img/trans.png)
[英]Cannot read property 'byteLength' of undefined for aws-sdk js v3 for dynamodb client
[英]aws-sdk-js for translate client results an error "cannot read property 'byteLength' of undefined"
我在 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();
我已按照文檔中的說明進行操作。
但是,結果如下。
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 }
}
此問題的原因是什么,我該如何解決?
我找到了解決方案。 我們可以利用TranslateTextCommand
從@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)
// ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.