我有一个由SNS队列触发的AWS lambda函数,它应该从它接收的消息中提取一些数据,格式化它,然后将它发送到另一个SNS队列.在我try 发送到第二个队列之前,一切都很顺利.为了做到这一点,我安装了@aws-sdk/client-sns
,并试图发送一条简单的消息.当我运行代码时,它会抛出与无法找到TypeScript定义相关的以下错误:
✖ in ./node_modules/@aws-sdk/client-sns/dist-es/index.js 1:0-22
Module not found: Error: Can't resolve './SNS' in '/Users/userName/development/aws-sdk-error/node_modules/@aws-sdk/client-sns/dist-es'
resolve './SNS' in '/Users/userName/development/aws-sdk-error/node_modules/@aws-sdk/client-sns/dist-es'
using description file: /Users/userName/development/aws-sdk-error/node_modules/@aws-sdk/client-sns/package.json (relative path: ./dist-es)
using description file: /Users/userName/development/aws-sdk-error/node_modules/@aws-sdk/client-sns/package.json (relative path: ./dist-es/SNS)
no extension
/Users/userName/development/aws-sdk-error/node_modules/@aws-sdk/client-sns/dist-es/SNS doesn't exist
.ts
/Users/userName/development/aws-sdk-error/node_modules/@aws-sdk/client-sns/dist-es/SNS.ts doesn't exist
tsx
/Users/userName/development/aws-sdk-error/node_modules/@aws-sdk/client-sns/dist-es/SNStsx doesn't exist
as directory
/Users/userName/development/aws-sdk-error/node_modules/@aws-sdk/client-sns/dist-es/SNS doesn't exist
这是引发错误的文件的简化版本:
import { SNSClient, PublishCommand } from '@aws-sdk/client-sns';
export const showError = async () => {
const client = new SNSClient( { region: 'us-west-1' } );
const params = {
Message: 'some text',
TopicArn: 'arn:aws:sns:us-east-1:111111111111:someOtherTopic'
};
try {
await client.send( new PublishCommand( params ));
} catch ( error ) {
}
};
我已经搜索了几个小时,还没有找到问题所在,尽管我已经try 更改我的tsconfig.json
文件中的值,并try 了多个版本的Node(14.x、16.x、18.x),但我想使用16.15.0.如果您能帮我解决这个问题,我们将不胜感激.
我在Github上创建了一个示例回购协议,显示了实际操作中的错误:https://github.com/autoboxer/aws-sdk-error