2017-02-23 14 views
2

ファイルランタイムをインポートするのに2つの異なるコードを使用していますが、そのうちの1つはうまくいきます。角2:System.import():フルパスで動作しない

ワーキング:

System.import('../../FileName.ts').then(classObj => {   
     console.log(classObj);    
}); 

動作しない:

見つけることができませんモジュールのアプリケーション/モデル/ FileName.ts:

System.import('App/Models/FileName.ts').then(classObj => {   
     console.log(classObj);    
}); 

それはエラーの下に投げます'

ファイル構造とは、コードが書かれていると私も同じ構造からファイルをインポートしようとしている:

(1)コード: (2)インポートActivityModel.ts:ApplicationModel.ts

enter image description here

上記の問題を解決するには、上記の問題を解決するのに役立ちます。

+0

絶対パス(App/Models/FileName.ts)が機能しないように、FileName.tsが2つのフォルダの外にあるようです。相対パス(../../FileName.ts)を指定する必要があります。 –

+0

私はそれを知っているが、動的にはあらかじめ定義されたファイルパスではなく、任意のフォルダからの任意のファイルにすることができるので、私は完全なパスを持っています。 –

+0

あなたは ''/App/Models/FileName''を試すことができます –

答えて

7

まず第一に、あなたは以下の変更を試すことができますinstalled.ThenのWebPACKの最新バージョンを持っていることを確認してください。次のコードを変更webpack.config.jsファイルで

を、

resolve: { 
     extensions: ['.ts', '.js', 'css'], 
     "modules": [ 
      "./node_modules", 
      "content" 
     ] 
    }, 

.tsファイルの変更で

output: { 
      path: path.resolve(__dirname, 'dist'), 
      filename: '[name].js', 
      publicPath: 'dist/', 
     } 

System.import('horizontal/models/FileName.ts').then(classObj => {   
     console.log(classObj);    
}); 
  • resolverは、上記のようにその フォルダ内のファイルは、絶対パスでアクセスすることができ、アプリケーションのルートに対する相対ファイルをロードするために使用され、 によってwebpack.config.jscontentフォルダを解決します。

    FileName.tsのバンドルファイルをdistフォルダ内に作成され、 がブラウザにロードされます
  • dynamically.Webpackがブラウザでエラー をスローします(今、content/horizontal/models/FileName.tsようなパスは動作しません) 、それはcannot load chunk 0または何か。これは です。これは、 スクリプトタグを使用してロードした最初のJavaScriptファイルに対してではなく、HTML ファイルを基準にして他のファイルを読み込もうとするためです。

    これを移行するには、Webpack configにpublicPathを追加する必要があります。

希望、それは助けになる!

+0

ありがとう、それは私のために働く –

0

は交換してください

"baseUrl": "." 

あなたのTSconfigにこれを追加します ""インポート用のベースフォルダの場所を示すパスが表示されます。私の場合、tsconfigは私のappフォルダと同じフォルダに入っていたので、単に "。"に設定しました。

+0

運がいい、まだ同じ問題 –

関連する問題