首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS CDK,类型记录-类型'this‘的参数不能分配给类型'Construct’的参数

AWS CDK,类型记录-类型'this‘的参数不能分配给类型'Construct’的参数
EN

Stack Overflow用户
提问于 2021-12-19 12:07:27
回答 2查看 1.8K关注 0票数 3

我有由cdk cli(Typecript Language)生成的代码:

代码语言:javascript
复制
import { Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as appsync from '@aws-cdk/aws-appsync';

export class BookStoreGraphqlApiStack extends Stack {
    constructor(scope: Construct, id: string, props?: StackProps) {
        super(scope, id, props);

        const api = new appsync.GraphqlApi(this, 'MyApi', {
            name: 'my-book-api',
            schema: appsync.Schema.fromAsset('graphql/schema.graphql')
        });
    }
}

我得到了一个错误:

代码语言:javascript
复制
Argument of type 'this' is not assignable to parameter of type 'Construct'.
  Type 'BookStoreGraphqlApiStack' is missing the following properties from type 'Construct': onValidate, onPrepare, onSynthesize

我的package.json:

代码语言:javascript
复制
"devDependencies": {
    "@types/jest": "^26.0.10",
    "@types/node": "10.17.27",
    "aws-cdk": "2.2.0",
    "jest": "^26.4.2",
    "ts-jest": "^26.2.0",
    "ts-node": "^9.0.0",
    "typescript": "~3.9.7"
  },
  "dependencies": {
    "@aws-cdk/aws-appsync": "^1.136.0",
    "aws-cdk-lib": "2.2.0",
    "constructs": "^10.0.12",
    "source-map-support": "^0.5.16"
  }

节点版本: v16.13.0

aws版本: 2.2.0

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-19 19:06:39

您正在混合来自CDK V1和新发布的CDK V2的依赖关系,它们是不兼容的。

若要获得有效的V2设置,请将AppSync包更改为import * as appsync from '@aws-cdk/aws-appsync-alpha'。在V2中,alpha API有独立的包,稳定的包位于公共的aws-cdk-lib中。AppSync的L2结构属于alpha类别。

以下是两个CDK版本的导入模式概述:

代码语言:javascript
复制
// V2
import { Construct } from 'constructs'; // construct is in a separate package
import { Stack, StackProps, aws_s3 as s3 } from 'aws-cdk-lib'; // common package for stable construct
import * as appsync from '@aws-cdk/aws-appsync-alpha'  // alpha constructs in separate packages

// V1 - separate packages core and for each service
import * as cdk from '@aws-cdk/core';
import * as appsync from '@aws-cdk/aws-appsync';
票数 9
EN

Stack Overflow用户

发布于 2021-12-19 19:05:38

原来这是aws的一个已知问题,因为v2没有正确迁移,解决方案是:

代码语言:javascript
复制
npm un -g aws-cdk
代码语言:javascript
复制
npm i -g aws-cdk@1.136.0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70411255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档