Skip to content

typeRoots and types not working  #37708

@novaknole

Description

@novaknole

TypeScript 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 windowsbecausePhasergets resolved fromnode_modules/phaser/package.json's types propertywhich shouldn't be happening because of mytypeRoots`.

Basically both things are so much related to each other.

Metadata

Metadata

Assignees

Labels

Fix AvailableA PR has been opened for this issueNeeds InvestigationThis issue needs a team member to investigate its status.RescheduledThis issue was previously scheduled to an earlier milestone

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions