8

TypeScript 2 で記述された angular 2 プロジェクトに取り組んでおり、現在、インポート メカニズムの問題に直面しています。

私のプロジェクトのすべてのサブフォルダーには、そのフォルダーに含まれるクラスをエクスポートする「index.ts」ファイルが含まれています。

だから、私の「アプリ」ディレクトリには、

  • 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' からインポートできます)。

前もって感謝します :)

4

3 に答える 3

13

まったく同じ問題がありました。

循環依存関係があるようです。

これを書くとき:

import { AppComponent } from '.';

リゾルバーはこれに行き、index.tsこれを見ます:

export * from './app.component';

それで、それはこれに行き、./app.componentこれを見ます:

import { AppComponent } from '.';

に行き、index.tsこれを見ます:

export * from './app.component';

などなど…。

これの奇妙な点は、警告が表示されないことです。ローダーによっては、実際には2回目に正しく解決される場合があります(最初は未定義になりますが、その後の呼び出しでは正しく解決されます)-私は4時間費やしましたあまり目立たない循環依存です。タイプスクリプトはワームの適切な缶であるため、これらのことについて警告を発する必要があると強く主張します。

于 2016-10-12T00:22:59.257 に答える
0

これは、よりシャープなエラー メッセージである可能性があります。resharper をインストールしていますか?無効にして再試行できますか?

resharper エラーの場合は、Resharper オプションで Typescript のバージョンを設定します。

私は resharper の 9.x バージョンを持っていましたが、Typescript 1.6 しかできませんでした。2.0 にするには、10.x に更新する必要がありました。

于 2016-10-10T20:42:16.310 に答える