所以我是cdk和typecipt初学者。
成功部署了两个堆栈后,cdk synth
没有收到以下错误:Unexpected token export. Subprocess exited with error 1
。
我对解决此问题的兴趣不大,对堆栈跟踪的位置或有关该错误的任何其他信息更感兴趣。进行--trace
或-v
并不能真正提供很多有用的信息。
有什么想法可以获取这些信息吗??
答案 0 :(得分:1)
我认为这个问题是因为 npx 用于在引擎盖下运行 ts-node,而 npx 似乎按照 here 的描述吞噬了堆栈。
一种解决方法是添加一个 try/catch 块,例如
try {
main()
} catch (e) {
console.log(e)
throw e
}
答案 1 :(得分:0)
幕后发生的事情是CDK转换为堆栈并转换为cloudformation模板并将其保存到S3-运行cdk bootstrap
(更多信息here)时创建的S3存储桶。
运行cdk synth
时,CDK尝试将代码(在您的情况下为打字稿)转换为cloudformation堆栈。此错误:Unexpected token export.
可能是由于异步调用没有结束,此外,此错误意味着您的代码无法转移到cloudformation堆栈中,但这并不意味着您的“ cdk”代码已损坏。
运行cdk deploy
cdk时,将传输的模板与S3模板进行比较。并仅部署差异。
更新:
昨天DevopsStart发布了有关在vs代码中调试cdk的新文章。 这可能会有所帮助。
答案 2 :(得分:0)
所以我认为这是由于某些使用ESM导出语法的JavaScript(您的JavaScript或可能在导入的模块中)引起的。
这一开始让我有些困惑,因为我在整个项目中都使用了导入/导出语法,但是该项目是用打字稿编写的,这意味着它在执行之前就已被编译为javascript,并且很可能所有这些ESM语句以CJS语法发出。但是,我也使用lodash-es
,因为我更喜欢导入语法。该模块在内部使用 javascript 中的ESM语法,因此,这由节点运行时直接解释。现代版本的节点可以使用ESM语法,但是只能在我所没有的特定软件包配置下使用。我的解决方案只是删除有问题的程序包,但是您可以朝另一个方向进行操作,并配置package.json
以便在节点中启用ESM。这可能还需要更新您的tsconfig.json
,以使打字稿编译器也发出ESM。