2017-11-16 11 views
1

更新日:解決済み!循環依存問題を指摘してくれた@ JulesRandolphに感謝します。TypeScriptとWebpack 3のエイリアスに関する問題

私は現時点で開発しているプロジェクトではかなり愚かな状況に陥っています。このプロジェクトは、最新バージョンのTypeScript、webpack、および素晴らしいタイプスクリプトローダを中心に構築されています。

のTSconfigには、次の別名が含まれています。config別名

"paths": { 
    "~actions" : [ 
    "app/actions/index.ts" 
    ], 
    "~components" : [ 
    "app/components/index.ts" 
    ], 
    "~helpers" : [ 
    "app/helpers/index.ts" 
    ], 
    "~middlewares" : [ 
    "app/middlewares/index.ts" 
    ], 
    "~redux" : [ 
    "app/redux/index.ts" 
    ], 
    "~styles/*" : [ 
    "app/styles/*" 
    ], 
    "~types" : [ 
    "app/types/index.ts" 
    ] 

ザ・WebPACKのは、次のように示している(私も$及びその使用のための適応のTSconfig()* /とせずにしようとしたことに注意してください):

{ 
    '~actions$': '/Users/user/Workspace/prj-name/app/actions/index.ts', 
    '~components$': '/Users/user/Workspace/prj-name/app/components/index.ts', 
    '~helpers$': '/Users/user/Workspace/prj-name/app/helpers/index.ts', 
    '~middlewares$': '/Users/user/Workspace/prj-name/app/middlewares/index.ts', 
    '~redux$': '/Users/user/Workspace/prj-name/app/redux/index.ts', 
    '~styles': '/Users/user/Workspace/prj-name/app/styles', 
    '~types$': '/Users/user/Workspace/prj-name/app/types/index.ts' 
} 

私の問題は、を具体的かつ唯一「アプリ/ Reduxの/ app.ts」ファイルを、私は次の構文を使用してインポートすることはできません、ということです

import { 
    imp1, 
    imp2 
} from '~redux'; 

インポートが定義されていません。しかし、これを行うことができます:

import { 
    imp1 
} from './[comp-name]'; 

私は同じ構文(と同じフォルダ名)を使用して呼び出すことができます。また、他のフォルダからは〜reduxからのインポートを呼び出すことができます。

私が知っていたほとんどすべてを試しましたが、何も変わりませんでした。

誰もが興味を持っている場合は、ここでは(ほぼ)全体のWebPACKの設定は次のとおりです。https://pastebin.com/gBabDjH9

+0

'〜reducers'のエイリアスもパスもありません...これは理由だと思います。 –

+0

残念ながら、reduxフォルダの名前は、名前が変わるかどうかを調べるだけです。指摘していただきありがとうございます。 – bmatei

+0

OK 私はwebpackエイリアスのための記号 '$'を認識していません。それらを取り除いてみましたか? –

答えて

0

輸出は、実行時にundefinedとして解決されることがよくあなたのWebPACKの設定に直交するかもしれないし、代わりに循環依存が原因で発生します。この問題を検査する

、あなたは

  1. 同じバグが./indexからのインポートで発生が確認できました。もしそうであれば、それは循環依存性バグである可能性が高いです。
  2. run madgeこの円形の場所を特定するプロジェクトには、何かがmadge <myTranspiledFolder> --circularのようなものです。マージしたファイルがモジュール化されている(マージはAMD、CommonJS、およびES6モジュールをサポートしている)が、バンドルされていないことを確認してください。
+1

もう一度ありがとう、ジュール! – bmatei

+0

もう一度歓迎します:-) –

+0

私の答えを+1してもらえます;-) –

関連する問題