AWS Transcribe 客户端不提供名为“transcribeClient”的导出

问题描述

我正在尝试将 AWS Transcribe 集成到我的 Node.JS 应用程序中。 AWS S3 和 Polly 工作正常,但 AWS Transcribe 不行。我使用的是 AWS 的示例代码

当我想通过 AWS example code 开始转录作业时,我收到以下错误:请求的模块“./libs/transcribeClient.js”不提供名为“的导出”转录客户端'

这也是我收到未定义所需错误的唯一文件。我想知道为什么它只发生在 AWS transcribe 而不是其他服务?我还可以通过 AWS CLI 开始转录作业。

那个 AWS Transcribe 代码不起作用 - transcribeClient.js:

const AWS_BUCKET_NAME="X"
const AWS_REGION="eu-central-1"
const AWS_ACCESS_KEY="XXX"
const AWS_SECRET_KEY="XXX"

// snippet-start:[transcribe.JavaScript.createclientv3]
const { TranscribeClient } = require('@aws-sdk/client-transcribe');
// Create anAmazon EC2 service client object.
const transcribeClient = new TranscribeClient({ AWS_REGION,AWS_ACCESS_KEY,AWS_SECRET_KEY });
module.exports = { transcribeClient };

AWS Polly 代码有效 - pollyClient.js:

const AWS_BUCKET_NAME="X"
const AWS_REGION="eu-central-1"
const AWS_ACCESS_KEY="XXX"
const AWS_SECRET_KEY="XXX"

// snippet-start:[polly.JavaScript.createclientv3]
const { PollyClient } =require( "@aws-sdk/client-polly");
// Create an Amazon S3 service client object.
const pollyClient = new PollyClient({ AWS_REGION,AWS_SECRET_KEY});
module.exports = { pollyClient };

我期待着您的阅读!谢谢!

解决方法

我解决了。现在它可以在我的 Node.js 12 环境中使用了。

package.json
我将 "type": "modules" 更改为 "type": "commonjs"

transcribeClient.js 需要如下所示:
这里我把export改成了module.exports。

const { TranscribeClient } = require("@aws-sdk/client-transcribe");
const transcribeClient = new TranscribeClient({ AWS_REGION,AWS_ACCESS_KEY,AWS_SECRET_KEY});
module.exports = { transcribeClient };

transcribe_create_job.js 需要如下所示:
这里我把import语句改成了require。

const { StartTranscriptionJobCommand } = require("@aws-sdk/client-transcribe");
const { transcribeClient } = require("./libs/transcribeClient.js")

// Set the parameters
const params = {
  TranscriptionJobName: "test123",LanguageCode: "en-GB",// For example,'en-US'
  MediaFormat: "webm",'wav'
  Media: {
    MediaFileUri: "https://x.s3.eu-central-1.amazonaws.com/dlpasiddi.webm",},};

const run = async () => {
  try {
    const data = await transcribeClient.send(
      new StartTranscriptionJobCommand(params)
    );
    console.log("Success - put",data);
    return data; // For unit tests.
  } catch (err) {
    console.log("Error",err);
  }
};
run();