【问题标题】:How to import repo with uncompiled TypeScript in Angular 5+ (and exclude .spec.ts files)如何在 Angular 5+ 中使用未编译的 TypeScript 导入 repo(并排除 .spec.ts 文件)
【发布时间】:2018-01-25 18:52:30
【问题描述】:

最近升级到 Angular 5.x 不允许从 node_modules 存储库导入未编译的 TypeScript。看起来解决方法是通过"include": ["node_modules/example/**/*.ts"] 使用tsconfig.json 包含.ts 文件;但是,这包括导致错误的.spec.ts 文件。

稍微回溯一下,如果您的 repo 未编译,您会收到如下错误:

ERROR in ./node_modules/example/lib/core/example.ts
Module build failed: Error: /Users/example/Work/example/example/node_modules/example/lib/core/example.ts is missing from the TypeScript compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property.
The missing file seems to be part of a third party library. TS files in published libraries are often a sign of a badly packaged library. Please open an issue in the library repository to alert its author and ask them to package the library using the Angular Package Format (goo.gl/jB3GVv).
    at AngularCompilerPlugin.getCompiledFile (/Users/example/Work/example/example/node_modules/@angular/cli/node_modules/@ngtools/webpack/src/angular_compiler_plugin.js:656:23)
    at plugin.done.then (/Users/example/Work/example/example/node_modules/@angular/cli/node_modules/@ngtools/webpack/src/loader.js:467:39)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
 @ ./lib/visualization/visualization-widget/visualization-widget/visualization-widget.component.ts 25:24-79
 @ ./lib/visualization/visualization-widget/visualization-widget.module.ts
 @ ./lib/visualization/visualization.module.ts
 @ ./lib/example.module.ts
 @ ./src/demo-app/app.module.ts
 @ ./src/main.ts
 @ multi webpack-dev-server/client?http://0.0.0.0:0 ./src/main.ts

我了解未编译的 TS 不会像以前那样导入,因为无法控制哪个编译器用于库。然而,这对我们来说无关紧要,因为它在一个内部仓库中,我们确实可以控制它。因此,导入未编译的 TS 为我们节省了一步(并且可能会无意中省略这一步)。

问题是我们不确定如何包含.ts 文件和排除 .spec.ts 文件。

tsconfig.json 我们有:

  "include": ["node_modules/example/**/*.ts"],
  "exclude": ["node_modules/example/**/*.spec.ts"],

这不起作用。 .spec.ts 文件仍然包含在内,据我了解,第一个 include 规则“胜过”第二个 exclude 规则。

我们如何导入.ts 文件并排除.spec.ts 文件?

这是我今天早些时候提出的问题:How to exclude files ending in '.spec.ts' in tsconfig.json 这是一个关于这个问题的帖子:https://github.com/angular/angular-cli/issues/8284

【问题讨论】:

    标签: angular typescript tsconfig


    【解决方案1】:

    打开你的 tsconfig.json,然后改成这个

    {
      ...
      "compilerOptions": {
       ...
      },      
      "include": [
        "./src",
        "node_modules/example"
      ],
      "exclude" : ...
    }
    

    【讨论】:

    • 大家好,我在升级到 Angular5 时遇到了同样的问题。我使用上面提到的解决方案,即 "include": [ "src/**/*", "./node_modules/XXX/**/*.ts" ], "exclude": "./node_modules/XXX/ **/*.spec.ts”。我仍然遇到同样的问题。为什么它不拾取文件?
    • @Kaushik27 您是否有任何错误消息或创建一个新问题来描述您的情况?
    猜你喜欢
    • 2013-02-22
    • 2018-04-05
    • 1970-01-01
    • 2018-07-05
    • 2016-08-15
    • 2020-10-23
    • 2020-08-07
    • 2013-12-14
    • 1970-01-01
    相关资源
    最近更新 更多