尝试使用python AWS CDK创建空堆栈时返回JSII错误
aws cdk返回空堆栈上的jsii错误。复制的步骤是在hello world级别,这让我觉得我的某个地方存在版本不匹配。我已经重新安装了aws cli、cdk和nodejs。有什么建议吗 复制步骤:尝试使用python AWS CDK创建空堆栈时返回JSII错误,python,node.js,amazon-web-services,aws-cdk,Python,Node.js,Amazon Web Services,Aws Cdk,aws cdk返回空堆栈上的jsii错误。复制的步骤是在hello world级别,这让我觉得我的某个地方存在版本不匹配。我已经重新安装了aws cli、cdk和nodejs。有什么建议吗 复制步骤: mkdir myfolder cdk init --language python .env\Scripts\activate.ps1 python -m pip install -r requirements.txt cdk synth 返回错误和空堆栈: (.env) p$[myfolder
mkdir myfolder
cdk init --language python
.env\Scripts\activate.ps1
python -m pip install -r requirements.txt
cdk synth
返回错误和空堆栈:
(.env) p$[myfolder]> cdk synth d:\myfolder\.env\lib\site-packages\jsii\_embedded\jsii\jsii-runtime.js:13295
throw e;
^
Error: EOF: end of file, read
at Object.readSync (fs.js:592:3)
at SyncStdio.readLine (d:\myfolder\.env\lib\site-packages\jsii\_embedded\jsii\jsii-runtime.js:13278:33)
at InputOutput.read (d:\myfolder\.env\lib\site-packages\jsii\_embedded\jsii\jsii-runtime.js:13203:34)
at KernelHost.run (d:\myfolder\.env\lib\site-packages\jsii\_embedded\jsii\jsii-runtime.js:13021:32)
at Immediate.<anonymous> (d:\myfolder\.env\lib\site-packages\jsii\_embedded\jsii\jsii-runtime.js:13029:37)
at processImmediate (internal/timers.js:461:21) {
errno: -4095,
syscall: 'read',
code: 'EOF'
}
Resources:
CDKMetadata:
Type: AWS::CDK::Metadata
Properties:
Modules: aws-cdk=1.69.0,@aws-cdk/cloud-assembly-schema=1.69.0,@aws-cdk/core=1.69.0,@aws-cdk/cx-api=1.69.0,@aws-cdk/region-info=1.69.0,jsii-runtime=Python/3.7.4
Metadata:
aws:cdk:path: myfolder/CDKMetadata/Default
Condition: CDKMetadataAvailable
当我第一次开始使用cdk时看到了这个错误。但是,“cdk synth”显示了一个堆栈,所以我继续。我甚至能够“cdk部署”简单的堆栈。最终,由于代码变得稍微复杂,jsii错误阻止了堆栈的创建。我创建的代码在我的机器上抛出错误,但在其他机器上不会出错。使用来自其他开发人员的cdk代码不会在我的机器上合成或部署堆栈
到目前为止,我已经重新安装了aws cli、node.js和cdk。任何关于jsii错误起源的想法或如何修复它们的想法?对于Windows上的AWS-CDK,AWS CDK group记录的jsii中至少有一个错误。在jsiiruntime的深处(确切地说是第13278行),aws cdk组有一条注释,其中包含指向nodejs错误报告的链接。我向aws cdk报告了我的问题,这似乎是相关的。他们复制了这个bug,并在nodejs上创建了一个bug报告。此错误报告具有指向其他错误报告的链接 但我仍然需要一个解决办法。经过多次尝试和错误后,以下两种变通方法应该适用于Windows上的AWS-CDK 解决方案1:将站点包中的jsii 1.14.x发行版替换为1.12或1.13发行版。将1.14换成1.12或1.13后,错误停止。获得发行版是一个技巧。你必须从没有升级或运行pip的人那里得到一个——我就是这么做的
解决方案2:将开发环境从Windows移到linux或mac上TL;博士扩大了工作范围。(上述AWS-CDK缺陷报告中提出了一个问题) 解决方案1:替换jsii 1.14.x发行版 发行版文件夹:jsii包含在两个文件夹中 jsii和jsii-1.14.1.dist-info 将这两个文件夹替换为旧安装版本1.12或1.13中的文件夹 可以在以下一个或两个位置找到发行版文件夹: 发行版位置虚拟环境:jsii发行版将在站点包目录中找到。例如: .env\lib\python3.8\site包 其中虚拟环境名称=.env,python版本=3.8 发行版位置非虚拟:如果您尚未创建虚拟环境,则该位置应为该位置。请注意,python版本也是路径的一部分 C:\Program Files\Python37\Lib\site软件包 注意:由于某些原因,它们未安装在此处。但是,这可能会改变,所以请记住这一点。 C:\Users\yourusername\AppData\Roaming\Python\Python37\site软件包 解决方案2:移动到linux 在windows中,安装WSL 2。
安装Ubuntu或您最喜欢的linux版本。
安装python 从Windows使用您喜爱的Windows IDE!我使用visualstudio代码。如果我没记错的话,需要安装一个扩展 警告:在Windows系统上运行python、cdk等文件时,我遇到了问题(例如:/mnt/d/project)。只需将repo复制到“纯”linux文件系统(例如:~/project)。我在linux端安装了git,并将文件作为单独的机器进行维护
- **CLI Version :aws-cli/2.0.61 Python/3.7.7 Windows/10 exe/AMD64
- **cdk Version:1.69.0 (build 2b474b9)
- **Node.js Version:v14.15.0
- **OS :Windows 10
- **Language (Version):python 3.7.4