我正在尝试简单的CDK教程,但是我遇到了一些错误。
我的代码就是这样,
Argument of type 'App' is not assignable to parameter of type 'Construct'.
Type 'App' is missing the following properties from type 'Construct': onValidate, onPrepare, onSynthesize, validate, and 2 more.
7 new HelloCdkStack(app, 'HelloCdkStack', {不知怎的,这个错误出现了,但是在一些使用cdk.App()的教程中。为什么会发生这个错误??
import * as cdk from "@aws-cdk/core";
import {Table, AttributeType} from "@aws-cdk/aws-dynamodb";
export class HelloCdkStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
new Table(this, "items", {
partitionKey: {
name: "itemId",
type: AttributeType.STRING,
},
tableName: "items",
removalPolicy: cdk.RemovalPolicy.DESTROY, // NOT recommended for production code
});
// The code that defines your stack goes here
// example resource
// const queue = new sqs.Queue(this, 'HelloCdkQueue', {
// visibilityTimeout: cdk.Duration.seconds(300)
// });
}
}
const app = new cdk.App();
new HelloCdkStack(app, "HelloCdkStack");
app.synth();发布于 2022-01-20 14:31:05
在AWSCDK1.x中,导入是使用“@ AWS /core”进行的。这在CDK 2.x中发生了改变,其中导入是从包中进行的。
许多教程仍然使用CDK1.x,而CDK的初学者代码使用2.x。这就是为什么您有差异,因为应用程序初始化的代码会说使用较新的模块,而教程则会假设您会以旧的方式这样做。
为了解决这个问题,
更新堆栈文件以使用新的堆栈文件:import { Stack, StackProps } from 'aws-cdk-lib';
import * as cdk from '@aws-cdk/core';AWSCDK2.x:https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib-readme.html文档
AWSCDK1.x:https://docs.aws.amazon.com/cdk/api/v1/docs/aws-construct-library.html文档
发布于 2022-01-11 08:00:14
转到cdk_primer-stack.ts文件并修复从import * as cdk from 'aws-cdk-lib';导入到import * as cdk from '@aws-cdk/core';的核心SDK,问题是您在文件中使用的core版本与在cdk_primer-stack.ts中导入的版本不同。
https://stackoverflow.com/questions/70652702
复制相似问题