typeRoots and types not working
See original GitHub issueTypeScript Version: 3.8.3
Code
This is my tsconfig.json
{
"compilerOptions": {
"typeRoots": [
"./typings"
],
"types": ["Phaser"]
}
}
In my project root, I got package.json, package-lock.json, main.ts(empty one), tsconfig.json
.
tsconfig.json
contains the above code.
typings
folder which I wrote in typeRoots
is empty.
After that, I run the following command in terminal:tsc --traceResolution
The idea is I am trying to use Phaser
as a global variable in my main.ts
file.
Bug 1)
Expected behavior:
What should happen is Phaser
shouldn’t get resolved because compiler should start looking into my custom folder typings
.
Actual behavior:
Somehow it still gets resolved. And this is what it prints: Type reference directive 'Phaser' was successfully resolved to '/Applications/XAMPP/xamppfiles/htdocs/phaser-test/node_modules/Phaser/types/phaser.d.ts' with Pac kage ID 'phaser/types/phaser.d.ts@3.22.0', primary: false.
.
I don’t know how it finds it since in my typeRoots
, I don’t have node_modules
specified.
What I have tried:
I tried to exclude node_modules
folder, I thought maybe they still get compiled and that’s why this happens, but I couldn’t make exclude
work.
"exclude": ["node_modules/*"]
"exclude": ["./node_modules/*"]
"exclude": ["./node_modules"]
but none of these worked. , but i don’t think that will help because i created one file test.ts
and put something like this in there, but compilation is successful, So I guess the bug is related to typeRoots
.
let a:number = 10;
a="gio";
Bug 2)
Let’s change the above tsconfig.json
to the following:
"compilerOptions": {
"typeRoots": [
"./node_modules/phaser/types",
],
"types": ["Phaser"]
},
What should happen now is Phaser
should be resolved from ./node_modules/phaser/types
and not take care of anything else such as trying to find package.json
in node_modules/phaser
and looking at types
property in that package.json
. But what actually happens is this doesn’t get resolved at all on Ubuntu
versions, since ubuntu is 'case-sensitive. This config works fine on
OS x and windowsbecause
Phasergets resolved from
node_modules/phaser/package.json’s types propertywhich shouldn't be happening because of my
typeRoots`.
Basically both things are so much related to each other.
Issue Analytics
- State:
- Created 3 years ago
- Reactions:15
- Comments:5 (1 by maintainers)
Top GitHub Comments
I have
@types/node
installed in top level dir, and atsconfig.json
for a sub-component in a subdir with"types": []
and"typeRoots": []
but node types are still loaded in my browser app (__dirname etc). This seems to contradict what the docs say:https://www.typescriptlang.org/tsconfig#typeRoots
I assume this is the same issue?
I’m also experiencing the same problem.