typescript-go icon indicating copy to clipboard operation
typescript-go copied to clipboard

compilerOptions.baseUrl in tsconfig.json is not working

Open leowux opened this issue 7 months ago • 3 comments

I have the following baseUrl setting in the tsconfig.json in a nextjs project.

{
  "compilerOptions": {
    "target": "es5",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": false,
    "forceConsistentCasingInFileNames": true,
    "noEmit": true,
    "esModuleInterop": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "baseUrl": ".",
    "incremental": true,
    "plugins": [
      {
        "name": "next"
      }
    ],
    "strictNullChecks": true
  },
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
  "exclude": ["node_modules"]
}

But TypeScript Native Preview Language server report an error Cannot find module 'app/sitemap' or its corresponding type declarations.ts(2307)

Image

Howerver if I checkout TypeScript Language server, it is working.

Image

@typescript/native-preview: "7.0.0-dev.20250523.1",
Extension Version: 0.20250523.1

leowux avatar May 24 '25 15:05 leowux

baseUrl is unsupported. #474

You should be able to do this same thing with paths, or switch to package.json import maps.

jakebailey avatar May 24 '25 15:05 jakebailey

@jakebailey I modified baseUrl with paths in tsconfig.

{
  "compilerOptions": {
    "target": "es5",
    "lib": ["dom", "dom.iterable", "esnext"],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": false,
    "forceConsistentCasingInFileNames": true,
    "noEmit": true,
    "esModuleInterop": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "paths": {
      "app/*": ["./app/*"]
    },
    "incremental": true,
    "plugins": [
      {
        "name": "next"
      }
    ],
    "strictNullChecks": true
  },
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
  "exclude": ["node_modules"]
}

It is working in file app\robots.ts.

Image

But it is not working in file app\blog\[slug]\page.tsx. Is tsgo not support dynamic segment [slug] as a file name?

Image

leowux avatar May 24 '25 16:05 leowux

I have no idea what would provide those imports. Does this code compile when you run tsc?

jakebailey avatar May 24 '25 20:05 jakebailey

The baseUrl thing is expected. The [slug] bug was fixed by #969.

jakebailey avatar Jun 04 '25 06:06 jakebailey