• vscode

    ESLintがCLIだと動くのにVSCodeだと動かない

    下記の条件を満たしていると、VSCodeのバージョンが1.90.0(2024-06-12時点での最新)以下で動作しない。

    • typescript-eslintを利用している
    • monorepoを利用している
    • ESMである・eslint.config.mjsである
    • languageOptions.parserOptionsproject および tsconfigRootDir を設定している
    • import.meta.dirname を利用している ← これが原因

    原因としては、VSCode1.90.0の内部で利用されているElectron 29のNode.jsのバージョンが20.9.0であるため、import.meta.dirnameが利用できない。
    import.meta.urlは利用できるため、下記のような回避策で解決できる。

    eslint.config.json
    import { fileURLToPath } from "url"; const filename = fileURLToPath(import.meta.url); const dirname = import.meta.dirname ?? path.dirname(filename); export default tseslint.config( ..., { languageOptions: { parserOptions: { project: ["./tsconfig.eslint.json", "./packages/*/tsconfig.json"], tsconfigRootDir: dirname, }, }, }, ..., )

    Node.js 20.11.0で追加されている ので、Electron v30(Node.js 20.11.1)ではimport.meta.dirnameが利用可能になるはず。