I've set up path aliasing in typescript's .tsconfig
so my imports look cleaner.
In my code when I try and import my interface like this
import { ApiResponse } from '@api';
eslint complains: Unable to resolve path to module '@api'
However, intelisense in vscode seems fine. Its able to give code prediction and "Jump to declaration" which is a clue that my .tsconfig
is set up correctly but eslint is somehow misconfigured.
In my tsconfig.json, I've set up path aliasing like so:
{ "compilerOptions": { "moduleResolution": "node", "baseUrl": "./src", "paths": { "@api": ["./types/api"] }, } }
My ./src/types/api.ts looks like this:
// 3rd party API response object export interface ApiResponse { .... }
Finally, my .eslintrc.json looks like this:
{ "env": { "node": true }, "globals": { "console": true }, "plugins": ["@typescript-eslint", "prettier"], "parser": "@typescript-eslint/parser", "settings": { "import/extensions": [".js", ".ts"], "import/parsers": { "@typescript-eslint/parser": [".ts"] }, "import/resolver": { "node": { "extensions": [".js", ".ts"] } } } }
Any idea what I may be doing wrong?
To support the tsconfig baseUrl
and paths
, you need the package eslint-import-resolver-typescript
.
# install the basics npm i -D @typescript-eslint/parser @typescript-eslint/eslint-plugin # support tsconfig baseUrl and paths npm i -D eslint-plugin-import eslint-import-resolver-typescript
{ "settings": { "import/resolver": { "typescript": {} } }, "parser": "@typescript-eslint/parser", "parserOptions": { "project": "./tsconfig.json", "tsconfigRootDir": "./" }, "plugins": [ "@typescript-eslint", "import" ], "extends": [ "plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended-requiring-type-checking" ] }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With