【发布时间】:2021-03-23 16:47:30
【问题描述】:
我正在构建一个discord.js Discord 机器人。现在由于某种原因,discord.js 不适用于ESM 模块(一个完全独立的问题),所以我的机器人应用程序使用CommonJS 模块。现在我的系统上有另一个名为Lib 的项目,它有很多实用功能,我计划在几个不同的项目中使用,所以我不必重写它们。这个Lib 项目使用ESM 模块。因为我必须从DiscordBot 导入Lib,所以我在打字稿中使用动态导入语法。现在,每当我转换我的DiscordBot 项目时,动态导入都会被转换成一些丑陋的javascript 模块代码,而那个丑陋的模块代码最终会使用require()。由于 require() 无法导入 ESM 模块,我的机器人最终崩溃了。
然而,我尝试停止我的 ts 编译器,从我的 ts 文件中复制导入 Lib 的代码,然后手动将该代码粘贴到相应的 JS 文件中(并删除 TS 独有的功能,如类型注释和接口)。然后我运行了我的机器人应用程序,它运行得非常好。但我不想每次都这样做。所以这是tsc 的编译问题。我该如何解决这个问题?
【问题讨论】:
-
你探索过
moduleoption吗? -
嗯,当然可以。这就是我将
Lib设置为 ESM 模块并将DiscordBot设置为 CommonJS 模块的方式。 -
你能在这里分享你的
tsconfig.json吗?
标签: javascript node.js typescript tsc dynamic-import