Aws cdk 如何使用aws cdk synth/deploy显示堆栈跟踪

Aws cdk 如何使用aws cdk synth/deploy显示堆栈跟踪,aws-cdk,Aws Cdk,所以我是cdk和打字初学者。 在成功部署了几个堆栈之后,我没有在cdk synth中遇到以下错误:意外的令牌导出。子进程退出,出现错误1 我对解决这个问题不太感兴趣,而更感兴趣的是堆栈跟踪的位置,或者关于错误的任何其他信息。执行--trace或-v并不能提供很多有用的信息 有什么想法可以让我获得这样的信息吗???幕后发生的事情是CDK将stack转换为cloudformation模板,并将其保存到S3中—运行CDK bootstrap时创建的S3 bucket(更多信息) 当您运行cdksync

所以我是cdk和打字初学者。 在成功部署了几个堆栈之后,我没有在
cdk synth
中遇到以下错误:
意外的令牌导出。子进程退出,出现错误1

我对解决这个问题不太感兴趣,而更感兴趣的是堆栈跟踪的位置,或者关于错误的任何其他信息。执行
--trace
-v
并不能提供很多有用的信息


有什么想法可以让我获得这样的信息吗???

幕后发生的事情是CDK将stack转换为cloudformation模板,并将其保存到S3中—运行
CDK bootstrap时创建的S3 bucket
(更多信息)

当您运行
cdksynch
时,cdk试图将代码(在您的示例中是typescript)转换为cloudformation堆栈。此错误:
意外的令牌导出。
可能是由于异步调用未结束,此外,此错误意味着您的代码无法传输到cloudformation堆栈,但并不意味着您的“cdk”代码已损坏

运行
cdk deploy
cdk时,将传输的模板与S3模板进行比较。并且只部署差异

更新:

昨天DevPSStart发表了一篇关于在vs代码中去除cdk的新文章。 这可能会有帮助


所以我认为这是由一些使用ESM导出语法的javascript(您的或可能在导入的模块中)造成的

这让我一开始有点困惑,因为我在整个项目中都使用导入/导出语法,但是项目是用typescript编写的,这意味着它在执行之前被编译为javascript,而且很可能所有这些ESM语句都是用CJS语法发出的。但是,我也使用了
lodash es
,因为我更喜欢导入语法。该模块在内部使用javascript中的ESM语法,因此由节点运行时直接解释。node的现代版本可以使用ESM语法,但只能在我没有的特定包配置下使用。我的解决方案只是删除有问题的包,但是您可以转到另一个方向,配置您的
package.json
,以便在节点中启用ESM。这可能还需要更新
tsconfig.json
,以便typescript编译器也会发出ESM


我认为问题是因为npx用于在引擎盖下运行ts节点,npx似乎吞下了堆栈,如前所述

一个解决方法是添加一个try/catch块,例如

试试看{
main()
}捕获(e){
控制台日志(e)
掷e

}
OK。我明白了,但是为什么在cdk中没有任何日志记录选项,只给我整个堆栈跟踪…你说的
堆栈跟踪是什么意思
?我的意思是,我希望我可以在可疑线路上尝试捕获,并以某种方式获得整个堆栈跟踪。看起来cdk正在运行子流程中的所有内容,因此我的try-catch没有捕获任何内容,我只得到错误消息,没有其他内容。是的,您无法跟踪每个细节,因为大多数操作都是在运行时发生的。老实说,这可能是一个非常有用的特性,也许您可以向开发人员团队打开一个特性请求。但我不认为这是可能的,因为CDK把每个资源看作是一个逻辑单元。