无法从位于同一目录的脚本解析从 index.ts 的导入
Cannot resolve import from index.ts from script located in same directory
我正在处理一个用 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' 导入)。
提前谢谢你:)
这可能是一条 resharper 错误消息。你有安装resharper吗?您可以禁用它并重试吗?
如果是 resharper 错误,请在 Resharper 选项中设置 Typescript 的版本。
我有一个 9.x 版本的 resharper,它只让我升级到 Typescript 1.6。我必须更新到 10.x 才能达到 2.0。
我完全有 same issue.
您似乎有循环依赖。
当你这样写的时候:
import { AppComponent } from '.';
解析器转到 index.ts
并看到:
export * from './app.component';
然后它转到 ./app.component
并看到这个:
import { AppComponent } from '.';
所以它转到 index.ts
并看到这个:
export * from './app.component';
以此类推...
奇怪的是你没有收到任何警告,而且根据加载器的不同,它实际上可能第二次正确解析(所以第一次你得到 undefined 但在随后的调用中它正确解析) - 我已经由于不太明显的循环依赖,花了 4 个小时。我强烈认为打字稿应该对这些事情发出警告,因为它是一个适当的蠕虫罐头。
为避免循环依赖,请不要:
import { SomeClass } from './path/to/index';
相反,直接使用文件路径:
import { SomeClass } from './path/to/some-class';
这不适用于您从 node_modules
导入的模块。
我正在处理一个用 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' 导入)。
提前谢谢你:)
这可能是一条 resharper 错误消息。你有安装resharper吗?您可以禁用它并重试吗?
如果是 resharper 错误,请在 Resharper 选项中设置 Typescript 的版本。
我有一个 9.x 版本的 resharper,它只让我升级到 Typescript 1.6。我必须更新到 10.x 才能达到 2.0。
我完全有 same issue.
您似乎有循环依赖。
当你这样写的时候:
import { AppComponent } from '.';
解析器转到 index.ts
并看到:
export * from './app.component';
然后它转到 ./app.component
并看到这个:
import { AppComponent } from '.';
所以它转到 index.ts
并看到这个:
export * from './app.component';
以此类推...
奇怪的是你没有收到任何警告,而且根据加载器的不同,它实际上可能第二次正确解析(所以第一次你得到 undefined 但在随后的调用中它正确解析) - 我已经由于不太明显的循环依赖,花了 4 个小时。我强烈认为打字稿应该对这些事情发出警告,因为它是一个适当的蠕虫罐头。
为避免循环依赖,请不要:
import { SomeClass } from './path/to/index';
相反,直接使用文件路径:
import { SomeClass } from './path/to/some-class';
这不适用于您从 node_modules
导入的模块。