Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试使用python AWS CDK创建空堆栈时返回JSII错误_Python_Node.js_Amazon Web Services_Aws Cdk - Fatal编程技术网

尝试使用python AWS CDK创建空堆栈时返回JSII错误

尝试使用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

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]> 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