我有一個由 SNS 佇列觸發的 AWS lambda 函式,它應該從它接收到的訊息中提取一些資料,對其進行格式化,然后將其發送到不同的 SNS 佇列。在我嘗試發送到第二個佇列之前,一切都運行良好。為此,我安裝了@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 ) {
}
};
盡管我嘗試更改tsconfig.json檔案中的值并嘗試了多個版本的 Node(14.x、16.x、18.x),但我一直在尋找幾個小時并無法查明問題所在,但是想使用 16.15.0。任何幫助解決這個問題將不勝感激。
我在 Github 上創建了一個示例 repo,顯示了錯誤:https ://github.com/autoboxer/aws-sdk-error
uj5u.com熱心網友回復:
看起來其中的模塊@aws-sdk/client-sns/dist-es是從 vanilla JS 檔案中匯出的,根據您在 webpack 配置中配置模塊決議的方式,可能無法獲取這些檔案。
嘗試添加.js到您的擴展陣列:
resolve: {
extensions: [ '.ts', '.tsx', '.js' ]
}
這應該允許 webpack 解決 .js 中的 vanilla JS 模塊@aws-sdk/client-sns,并有望解決這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/476050.html
標籤:打字稿 亚马逊网络服务 aws-lambda aws-sdk 亚马逊-sns
