I'm building a discord.js
Discord bot. Now for some reason, discord.js
doesn't work with ESM
modules (a totally separate issue), so my bot app uses CommonJS
modules. Now I have another project on my system called Lib
, which has a lot of utility functions that I plan to use in several different projects so I don't have to rewrite them. This Lib
project uses ESM
modules. Since I have to import Lib
from DiscordBot
, I use the dynamic import syntax in typescript. Now, whenever I transpile my DiscordBot
project, the dynamic imports get converted into some ugly javascript module code, and that ugly module code ultimately ends up using require(). Since require() can't import ESM modules, my bot ends up crashing.
I tried however to stop my ts compiler, copy the code from my ts file that imports Lib
then pasting that code into the corresponding JS file manually (and removing TS-exclusive features like type annotations and interfaces). Then I ran my bot app, and it worked perfectly fine. But I don't want to have to do this every time. So it's tsc
's compiling that's the problem. How do I fix this?
module
option? – ColyerLib
to be a ESM module andDiscordBot
to be a CommonJS module. – Fredericktsconfig.json
here? – Katabolism