7

在我们的 angular2 项目中,我们将所有模型 ts 文件放在一个特定的文件夹中:/app/common/model/*。我可以用亲戚路径在我的组件中调用它们,但这非常费力。所以 2 解决方案,最好是自定义路径:StackOverflow:SystemJS & ES 模块导入的相对路径。但是我的 IDE 找不到路径。这是我的 tsconfig :

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": true,
    "outDir": "built",
    "baseUrl": ".",
    "paths": {
      "mymodel/*": [
        "app/common/model/*"
      ]
    }
  }
}

在我的组件中: import { Address } from 'mymodel/address.model';

IDE:[ts] 找不到模块....我尝试在路径中使用或不使用 *

第二种解决方案:Stackoverflow:Angular 2,不同文件夹之间的导入

IDE和编译都可以,组件中有完整路径: import { Address } from 'common/model/address.model';

和 tsconfig:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": true,
    "outDir": "built",
    "baseUrl": ".",
    "paths": {
      "*": [
        "app/*",
        "node_modules/*"
      ]
    }
  }
}

但是我们对所有模型都有 404 页面加载。也许 systemjs 文件中的配置?

在这两种情况下,我认为“outdir”参数是问题所在,我们缺少一些东西。

非常感谢您的帮助!

问候,

打字稿:2.0.6 角度:2.0.0

4

1 回答 1

2

在通过互联网搜索试图了解究竟是什么问题并尝试不同的故障排除选项后,我开始了解baseUrlPath如何协同工作

注意:此解决方案适用于 Angular Cli 1.x。不确定其他工具,

如果你使用baseUrl:"." 如下所示,它在 VScode 中有效,但在编译时无效

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "baseUrl": ".",
    "paths": {
      "@myproject/*": ["src/app/*"]
    }    
}

据我的理解和我的工作应用程序并检查角度 aio代码,我建议用作baseUrl:""src如下所示

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "baseUrl": "src",
    "paths": {
      "@myproject/*": ["app/*"],
      "testing/*": ["testing/*"]
    }    
}

通过将基本 URL 作为源(src 目录),编译器可以正确解析模块。

我希望这有助于人们解决此类问题。

于 2017-07-27T10:28:25.717 回答