角度tsconfig.ts路径绝对导入不会解析模块

时间:2019-12-09 13:51:23

标签: angular typescript

当Angular中的绝对导入无法按预期工作时,我遇到了一个问题。进行以下设置

// tsconfig.json
{
    "compileOnSave": false,
    "compilerOptions": {
        "baseUrl": "./",
        "moduleResolution": "node",
        ...
        "paths": {
            "@models/*": [
                "src/app/models/*"
            ]
        }
    }
}

// tsconfig.app.json
{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "types": []
  },
  "exclude": [
    "test.ts",
    "**/*.spec.ts",
    "**/*.e2e.ts"
  ]
}

目录结构如下:

/src/app/models
               /index.ts
               /my-model.ts
// index.ts
export * from './my-model';

以下进口可以正常运行

import { MyModel } from '../../models';
import { MyModel } from '@models/index';

但以下无效,而应该

import { MyModel } from '@models';

更新1:,如果我如下更改路径定义:

"@models/*": [
    "src/app/models/*",
    "src/app/models/"
]

以下导入方法同样适用

import { MyModel } from '@models/';

更新2:刚刚注意到以下设置:

"@models/*": [
    "app/models/*"
]

跟随导入仅适用于角度cli ,即使vc代码抱怨找不到组件

import { MyModel } from '@models/';

更新3:有趣的观察。只是查看了另一个项目的路径配置(由cli生成)和定义如下的路径:

"paths": {
    "@models": [
        "src/app/models"
    ],
    "@models/*": [
        "src/app/models/*"
    ],
}

通过此设置,导入可以按预期的方式进行:

import { MyModel } from '@models';

现在,问题是这是TS还是Angular CLI?

0 个答案:

没有答案