Node.js集成AWS Transcribe提示transcribeClient未导出报错如何解决
问题原因与解决方案
核心错误原因
- 模块规范不统一:报错
The requested module './libs/transcribeClient.js' does not provide an export named 'transcribeClient'以及require未定义,说明你的项目启用了ES Module(ESM)规范(即package.json中存在"type": "module"配置),但你写的transcribeClient.js用的是CommonJS的require导入、module.exports导出语法,两种模块规范混用导致导出/导入失败。 - SDK实例化参数错误:AWS SDK v3的客户端配置参数不支持
AWS_REGION、AWS_ACCESS_KEY、AWS_SECRET_KEY这种自定义命名的参数,你传的参数不会被SDK识别,之前Polly能正常运行是因为SDK自动读取了环境中的默认凭证(如本地.aws目录下的凭证文件、系统环境变量、云服务角色授权等),并非你的参数配置正确。
修复步骤
步骤1:统一模块规范
根据你的项目配置二选一即可:
方案A:项目使用ESM规范(package.json有"type": "module")
将transcribeClient.js的代码替换为ESM语法:
const AWS_BUCKET_NAME="X" const AWS_REGION="eu-central-1" const AWS_ACCESS_KEY="XXX" const AWS_SECRET_KEY="XXX" import { TranscribeClient } from '@aws-sdk/client-transcribe'; const transcribeClient = new TranscribeClient({ region: AWS_REGION, credentials: { accessKeyId: AWS_ACCESS_KEY, secretAccessKey: AWS_SECRET_KEY } }); export { transcribeClient };
导入时使用import { transcribeClient } from './libs/transcribeClient.js'即可。
方案B:项目使用CommonJS规范(package.json无"type": "module")
检查你调用转写任务的代码,将导入transcribeClient的语法改为CommonJS写法:
const { transcribeClient } = require('./libs/transcribeClient.js');
步骤2:修正所有AWS客户端的实例化参数
建议同时把Polly的实例化参数也修正为符合SDK要求的格式,避免后续环境变动时Polly也出现权限错误:
// 修正后的Polly客户端初始化 const pollyClient = new PollyClient({ region: AWS_REGION, credentials: { accessKeyId: AWS_ACCESS_KEY, secretAccessKey: AWS_SECRET_KEY } });
步骤3:确认依赖安装
运行以下命令确认Transcribe SDK已正确安装:npm install @aws-sdk/client-transcribe
内容的提问来源于stack exchange,提问作者Maurice
相关产品推荐
相关产品推荐

