【发布时间】:2022-02-18 20:30:33
【问题描述】:
我在 typescript/nodejs 环境中使用适用于 javascript 的 AWS SDK v3,但是当我使用 ts-node 运行它时,它抱怨无法在 s3client 上找到发送函数。我的代码:
const client = new S3Client({
credentialDefaultProvider: this.getCredentialDefaultProvider
region: "us-west-2",
});
const command = new ListObjectsCommand({
Bucket: bucket,
Prefix: prefix,
});
const result = await client.send(command);
我在启动服务器时遇到的错误是:
/server/node_modules/ts-node/src/index.ts:230
return new TSError(diagnosticText, diagnosticCodes)
TSError: ⨯ Unable to compile TypeScript:
src/controllers/aws.controller.ts(56,37): error TS2339: Property 'send' does not exist on type 'S3Client'.
这与the official documentation中的代码示例基本相同。但是我已经安装了正确的软件包(甚至清除了我的 node_modules 文件夹并重新安装了它),并且 node_modules 中的代码看起来是正确的。我做错了什么?
就上下文而言,这是在 docker-compose 容器中的 ts-node 中运行的 nodeJS 脚本。其他代码工作正常,包括使用相同客户端对象获取签名 URL 的命令。
【问题讨论】:
-
S3Client 配置没有 credentialDefaultProvider 参数。
-
@kevintechie 删除该行并不能解决编译问题。
-
你检查过客户端变量吗? TS认为是什么?可能需要所有代码进一步调试。
-
@kevintechie 我在 TypeScript 文件中运行 npmjs.com/package/@aws-sdk/client-s3 的示例时遇到了同样的错误
标签: javascript node.js aws-sdk-js