我正在使用TypeScript 2编写的angular 2项目,目前正面临导入机制的问题。
我项目的每个子文件夹中都有一个“index.ts”文件,该文件正在导出所述文件夹包含的类。
因此,在我的“app”目录中,
我有
然后是一个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/