gpt4 book ai didi

javascript - 如何防止 typescript 将动态导入转换为require()?

转载 作者:行者123 更新时间:2023-12-04 04:25:10 29 4
gpt4 key购买 nike

我正在构建一个 discord.js不和谐机器人。现在由于某种原因,discord.js不适用于 ESM模块(一个完全独立的问题),所以我的机器人应用程序使用 CommonJS模块。现在我的系统上有另一个项目,名为 Lib ,它有很多实用功能,我计划在几个不同的项目中使用,所以我不必重写它们。这个Lib项目使用 ESM模块。由于我必须导入Lib来自 DiscordBot ,我在 typescript 中使用动态导入语法。现在,每当我转换我的 DiscordBot项目中,动态导入被转换成一些丑陋的 javascript 模块代码,而这些丑陋的模块代码最终使用 require()。由于 require() 无法导入 ESM 模块,我的机器人最终崩溃了。
然而,我试图停止我的 ts 编译器,从我的 ts 文件中复制导入 Lib 的代码然后将该代码手动粘贴到相应的 JS 文件中(并删除 TS 独有的功能,如类型注释和接口(interface))。然后我运行了我的机器人应用程序,它运行得非常好。但我不想每次都这样做。所以它是 tsc的编译就是问题所在。我该如何解决?

最佳答案

目前这是不可能的。 GitHub 上有一个非常新的问题 (https://github.com/microsoft/TypeScript/issues/43329),但尚未实现。所以你现在能做的就是用你的 Lib 从 ESM 切换到 CommonJS。项目。

2022 年更新
该问题已关闭,现在有一个新选项 "module"调用node12 .那应该可以解决问题

关于javascript - 如何防止 typescript 将动态导入转换为require()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65265420/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com