【问题标题】:Why is TypeScript not respecting "exclude" on my node_modules dir?为什么 TypeScript 不尊重我的 node_modules 目录中的“排除”?
【发布时间】:2020-05-13 15:57:36
【问题描述】:

我遇到了 TypeScript 的问题,它正在检查我的 node_modules 目录。我正在使用带有项目结构设置的纱线工作区:

└─ .
   ├─ package.json
   ├─ packages
   │  ├─ admin
   │  │  ├─ src
   │  │  └─ tsconfig.json
   │  ├─ api
   │  │  ├─ package.json
   │  │  ├─ src
   │  │  ├─ tests
   │  │  ├─ tsconfig.json
   │  │  ├─ tsconfig.tsbuildinfo
   │  │  ├─ tslint.json
   │  ├─ client
   │  │  ├─ package.json
   │  │  ├─ tsconfig.json
   │  │  ├─ types.d.ts
   │  │  └─ updateDependencies.js
   │  └─ core
   │     ├─ package.json
   │     ├─ src
   │     ├─ tests
   │     └─ tsconfig.json
   ├─ tsconfig.json
   └─ yarn.lock

./tsconfig.json

{
  "exclude": ["./node_modules", "./node_modules/**/*", "node_modules", "dist"],
  "compilerOptions": {
    "baseUrl": ".",
    "sourceMap": true,
    "paths": {
      "@projectName/core": ["./packages/core/src"],
      "@projectName/api": ["./packages/api/src"],
      "@projectName/admin": ["./packages/admin/src"],
      "@projectName/client": ["./packages/client"]
    }
  }
}

顺便说一句,paths 不适合我。我还是要遍历树,如:@projectName/core/src/models/whatever

./packages/api/tsconfig.json

{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "lib": ["ES2019"],
    "module": "commonjs",
    "target": "ES2019",
    "strict": true,
    "resolveJsonModule": true,
    "moduleResolution": "node",
    "sourceMap": true,
    "outDir": "dist",
    "rootDir": "./src"
  },
  "include": ["./src/**/*"]
}

错误输出

yarn run v1.22.4
$ tsc
../../node_modules/@types/draft-js/index.d.ts:203:49 - error TS2304: Cannot find name 'Blob'.

203                 handlePastedFiles?(files: Array<Blob>): DraftHandleValue;
                                                    ~~~~

../../node_modules/@types/draft-js/index.d.ts:206:77 - error TS2304: Cannot find name 'Blob'.

206                 handleDroppedFiles?(selection: SelectionState, files: Array<Blob>): DraftHandleValue;
                                                                                ~~~~

../../node_modules/@types/googlemaps/index.d.ts:439:34 - error TS2304: Cannot find name 'Node'.

439         controls: Array<MVCArray<Node>>;
                                     ~~~~

../../node_modules/@types/googlemaps/index.d.ts:1609:38 - error TS2304: Cannot find name 'Node'.

1609         setContent(content: string | Node): void;
                                          ~~~~

../../node_modules/@types/googlemaps/index.d.ts:1622:28 - error TS2304: Cannot find name 'Node'.

1622         content?: string | Node;
                                ~~~~

../../node_modules/@types/googlemaps/index.d.ts:2602:32 - error TS2304: Cannot find name 'Node'.

2602         constructor(container: Node, opts?: SaveWidgetOptions);
                                    ~~~~

../../node_modules/@types/googlemaps/index.d.ts:2905:34 - error TS2304: Cannot find name 'Node'.

2905         controls: Array<MVCArray<Node>>;
                                      ~~~~

../../node_modules/@types/isomorphic-fetch/index.d.ts:8:30 - error TS2552: Cannot find name 'fetch'. Did you mean '_fetch'?

8 declare const _fetch: typeof fetch;
                               ~~~~~

  ../../node_modules/@types/isomorphic-fetch/index.d.ts:8:15
    8 declare const _fetch: typeof fetch;
                    ~~~~~~
    '_fetch' is declared here.

../../node_modules/@types/testing-library__dom/events.d.ts:86:59 - error TS2304: Cannot find name 'Window'.

86 export type FireFunction = (element: Document | Element | Window | Node, event: Event) => boolean;
                                                             ~~~~~~

../../node_modules/@types/testing-library__dom/events.d.ts:86:68 - error TS2304: Cannot find name 'Node'.

86 export type FireFunction = (element: Document | Element | Window | Node, event: Event) => boolean;
                                                                      ~~~~

../../node_modules/@types/testing-library__dom/events.d.ts:88:54 - error TS2304: Cannot find name 'Window'.

88     [K in EventType]: (element: Document | Element | Window | Node, options?: {}) => boolean;
                                                        ~~~~~~

../../node_modules/@types/testing-library__dom/events.d.ts:88:63 - error TS2304: Cannot find name 'Node'.

88     [K in EventType]: (element: Document | Element | Window | Node, options?: {}) => boolean;
                                                                 ~~~~

../../node_modules/@types/testing-library__dom/events.d.ts:91:54 - error TS2304: Cannot find name 'Window'.

91     [K in EventType]: (element: Document | Element | Window | Node, options?: {}) => Event;
                                                        ~~~~~~

../../node_modules/@types/testing-library__dom/events.d.ts:91:63 - error TS2304: Cannot find name 'Node'.

91     [K in EventType]: (element: Document | Element | Window | Node, options?: {}) => Event;
                                                                 ~~~~

../../node_modules/@types/testing-library__dom/pretty-dom.d.ts:3:43 - error TS2304: Cannot find name 'HTMLDocument'.

3 export function prettyDOM(dom?: Element | HTMLDocument, maxLength?: number, options?: OptionsReceived): string | false;
                                            ~~~~~~~~~~~~

../../node_modules/@types/testing-library__dom/pretty-dom.d.ts:4:40 - error TS2304: Cannot find name 'HTMLDocument'.

4 export function logDOM(dom?: Element | HTMLDocument, maxLength?: number, options?: OptionsReceived): void;
                                         ~~~~~~~~~~~~

../../node_modules/@types/testing-library__dom/screen.d.ts:11:28 - error TS2304: Cannot find name 'HTMLDocument'.

11         element: Element | HTMLDocument | Array<Element | HTMLDocument>,
                              ~~~~~~~~~~~~

../../node_modules/@types/testing-library__dom/screen.d.ts:11:59 - error TS2304: Cannot find name 'HTMLDocument'.

11         element: Element | HTMLDocument | Array<Element | HTMLDocument>,
                                                             ~~~~~~~~~~~~

../../node_modules/@types/testing-library__dom/wait-for-dom-change.d.ts:4:31 - error TS2304: Cannot find name 'MutationObserverInit'.

4     mutationObserverOptions?: MutationObserverInit;
                                ~~~~~~~~~~~~~~~~~~~~

../../node_modules/@types/testing-library__dom/wait-for-element-to-be-removed.d.ts:7:35 - error TS2304: Cannot find name 'MutationObserverInit'.

7         mutationObserverOptions?: MutationObserverInit;
                                    ~~~~~~~~~~~~~~~~~~~~

../../node_modules/@types/testing-library__dom/wait-for-element.d.ts:4:31 - error TS2304: Cannot find name 'MutationObserverInit'.

4     mutationObserverOptions?: MutationObserverInit;
                                ~~~~~~~~~~~~~~~~~~~~

../../node_modules/@types/testing-library__dom/wait-for.d.ts:7:35 - error TS2304: Cannot find name 'MutationObserverInit'.

7         mutationObserverOptions?: MutationObserverInit;
                                    ~~~~~~~~~~~~~~~~~~~~


Found 22 errors.

【问题讨论】:

    标签: typescript


    【解决方案1】:

    您可以尝试在./tsconfig.json 后面加上

    "exclude" : {
      "packages/*/node_modules"
    }
    

    或者

    "exclude" : {
      "**/node_modules"
    }
    

    ?

    --编辑

    看起来事情根本与排除无关。

    source

    {
      "compilerOptions": {
       "skipLibCheck": true,
      }
    }
    

    【讨论】:

    • 也不行:/
    • 更新了答案。至于“路径”问题,有一个answer
    猜你喜欢
    • 2015-09-17
    • 1970-01-01
    • 2021-11-17
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 2016-04-04
    相关资源
    最近更新 更多