我正在使用TypeScript 2编写的angular 2项目,目前正面临导入机制的问题。

我项目的每个子文件夹中都有一个“index.ts”文件,该文件正在导出所述文件夹包含的类。

因此,在我的“app”目录中,
我有

  • app.component.ts
  • app.module.ts
  • app.routes.ts

  • 然后是一个index.ts文件,其中包含:
    export * from './app.component';
    export * from './app.module';
    export * from './app.routes';
    

    我的问题是我无法从位于同一目录中的文件导入导出的类。

    例如,在我的app.module.ts中,我想导入应用程序组件。
    如果我做 :
    import { AppComponent } from './app.component';
    

    一切正常!在编译时和运行时没有错误。生活很酷,生活很美。

    但我不能执行以下操作:
    import { AppComponent } from '.'; // or './', or even './index'
    

    IDE(Visual Studio)实际上正确地解决了导入(它编译没有错误)。我什至会从Intellisence获得自动补全功能...

    但是我在运行时遇到了这个错误:
     Error: Unexpected value 'undefined' imported by the module 'AppModule'
    

    我只是不知道为什么。

    注意:通过从子文件夹的index.ts导入,我没有任何错误(例如,我可以从也有索引的'./core'中导入)。

    先感谢您 :)

    最佳答案

    我刚好有same issue

    您似乎具有循环依赖项

    当您编写此代码时:

    import { AppComponent } from '.';
    

    解析器转到index.ts并看到以下内容:
    export * from './app.component';
    

    因此,它转到./app.component并看到以下内容:
    import { AppComponent } from '.';
    

    因此转到index.ts并看到以下内容:
    export * from './app.component';
    

    等等等等...

    奇怪的是您没有收到任何警告,并且根据加载程序的不同,它实际上可能在第二次就可以正确解析(因此,第一次您未定义,但在随后的调用中它可以正确解析)-我花了4个小时,原因是极不明显的循环依赖关系。我强烈认为 typescript 应该对这些事情提出警告,因为它是蠕虫的合适 jar 头。

    关于angular - 无法解析来自同一目录中脚本的index.ts导入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39962047/

    10-14 13:32