【问题标题】:Angular 7 Can't find a way to get tsconfig.json path mapping worksAngular 7找不到让tsconfig.json路径映射工作的方法
【发布时间】:2019-07-16 19:16:18
【问题描述】:

我已经开始了一个 angular 7 项目,我正在尝试在 angular.json 上配置“路径映射”以改变我的导入方式:

import { environment } from '../../../environments/environment';

到这里:

import { environment } from '@environments/environment';

我已经在根级别的 tsconfig.json 文件中完成了这个配置:

"compilerOptions": {
        "baseUrl": "src", // This must be specified if "paths" is.
         ...
        "paths": {
            "@app/*": ["app/*"],
            "@config/*": ["app/_config/*"],
            "@environments/*": ["environments/*"],
            "@shared/*": ["app/_shared/*"],
            "@helpers/*": ["helpers/*"]
        },
...

但我在 cli 上也收到此错误

ERROR in src/app/errors/not-foud/not-found.component.ts(2,29): error TS2307: Cannot find module '@environments/environment'

我有什么遗漏吗?

【问题讨论】:

    标签: angular typescript angular7 tsconfig


    【解决方案1】:

    使用 Angular 9 RC 测试:

    更新两个地方:

    在项目基础级别让 vscode 开心:

    // tsconfig.json
    // .\
    {
      ...
       "paths": {
          "@x/*": [
            "x/*"
          ],
          "@web-env/*": [
            "src/environments/*"
          ],
          "@web-app/*": [
            "./projects/web/src/app/*"
          ],
        }
      ...
    }
    
    

    在子项目中,更新它以使 cli 快乐:

    // app.tsconfig.json
    // .\projects\web\tsconfig.app.json
    {
      ...
      "baseUrl": "./",
      "paths": {
        "@web-env/*": [
          "src/environments/*"
        ],
        "@web-app/*": [
          "src/app/*"
        ],
      }
      ...
    }
    

    【讨论】:

      【解决方案2】:

      在再次尝试之后,我发现问题出在 我的一个 vscode 设置,它被称为:"Typescript > Preferences: Import Module Specifier"设置为 “相对”,而不是 “非相对”。改变这个,我能够解决问题。

      【讨论】:

        【解决方案3】:

        在我的情况下,这是因为 src\tsconfig.app.json 还定义了 paths 映射。我的主要 tsconfig 中的那个被 TypeScript 编译器忽略了。我删除了它,它开始工作了。

        【讨论】:

          【解决方案4】:

          对我来说,我发现我需要以下内容:

          "baseUrl": ".",
          "paths": {
            "@my-company/my-module": ["./dist/@my-company/my-module"],
            "@my-company/my-module/*": ["./dist/@my-company/my-module/*"]
          }
          

          这么简单,不敢相信我花了这么长时间才弄明白

          【讨论】:

            猜你喜欢
            • 2017-07-05
            • 1970-01-01
            • 1970-01-01
            • 2019-12-03
            • 1970-01-01
            • 1970-01-01
            • 2016-06-08
            • 1970-01-01
            相关资源
            最近更新 更多