baseUserDirectory with tsx
How do I use
baseUserDirectory
with tsx? Seems that it doesn't load the ts files relatives to main ts source code4 Replies
you might need to use something like ts-node for that
but again
TL;DR: Do not use
ts-node
, use tsc-watch
instead.
We very strongly discourage using ts-node
because it was never meant to be used for bots.
ts-node
is designed for REPL
purposes. That's short for Read Eval Print Loop
.
Which means to read some code, dump it in an eval()
statement, print the result, and loop.
A discord bot is not that.
A Discord bot sets up a permanent web socket connection to the Discord server and connects to the rest gateway.
There is read yes, but no eval, no print, and no loop.
So what should you use instead?
The most ideal way is to just use the watch
flag of tsc
(tsc --watch
) and run node dist/index.js
to run your bot, then cancel that process and restart it when you have changes that require restarting.
You would open 2 terminal tabs, 1 in which you run tsc --watch
and another in which you run the bot.
This is, in particular, the most ideal way, because Discord has a limit to the amount of times you can log in with your bot, or register commands, per day.
Constantly logging in over and over again due to an auto-restarting process will get you close to that limit very quickly and once you exceed it, your development will be halted entirely for the current day.
However, this can be quite tedious so a great package to use instead is tsc-watch
.i see
We try to detect of TS files should be loaded here: https://github.com/sapphiredev/pieces/blob/main/src/lib/strategies/LoaderStrategy.ts#L43-L47
As you can see, tsx is not explicitly there. You could set TS_NODE_DEV env var if you're so inclined but we'd recommend just compiling and running.
GitHub
pieces/src/lib/strategies/LoaderStrategy.ts at main · sapphiredev/p...
Piece loader for @sapphire/framework. Contribute to sapphiredev/pieces development by creating an account on GitHub.