Description
Search Terms
paths
tsconfig.json
compilerOptions
ts-node
node
cannot find module
Suggestion
Per #10866, module path maps are not resolved in emitted code. This means that if you attempt to run the emitted code with node, it will be unable to resolve those paths and the server will not start.
Current solutions:
- use
browserify
orwebpack
to bundle the output -- this is an unfortunate solution given that it'd be the only reason for me to bring in one of these tools, as I've managed to build and deploy apps using just the typescript compiler. This blog post from the TypeScript team even strongly recommends using a TypeScript toolchain:
https://blogs.msdn.microsoft.com/typescript/2018/08/27/typescript-and-babel-7/
For that reason, we feel tsc and the tools around the compiler pipeline will still give the most integrated and consistent experience for most projects.
- use a tool like
module-alias
. This is a bit gross as it requires duplicating the path maps, and inserting code at the root of your server.
Proposed solution:
Offer a compilerOption
, something like resolvePaths
, that resolves aliased paths to their relative paths.
Use Cases
So that I can continue to meaningfully use the paths
property in tsconfig.json
.
Examples
Please see the example in #10866.
Checklist
My suggestion meets these guidelines:
- This wouldn't be a breaking change in existing TypeScript / JavaScript code
- This wouldn't change the runtime behavior of existing JavaScript code
- This could be implemented without emitting different JS based on the types of the expressions
- This isn't a runtime feature (e.g. new expression-level syntax)