2016-03-25 17 views
1

私はモジュールのツリーを持ち、特に2つは奇妙な動作をしています。 Babel 6 + Browserifyを使用する(babelify)。ES6モジュールが間違った順序を初期化していますか?

モジュール#1(WindowManager/index.js)は、デフォルトエクスポートと同様に、reducerという名前の関数をエクスポートします。

import WindowManager from './component'; 

import { combineReducers } from 'redux'; 
import { connect } from 'react-redux'; 
import { reducer as search_palette } from './SearchPalette'; 

const initialState = { 
    // stuff 
}; 

const window_manager = (state = initialState, action) => { 
    // stuff 

    return state; 
}; 

export const reducer = combineReducers({window_manager, search_palette}) 

const mapStateToProps = (state) => { 
    return { 
     // stuff 
    }; 
}; 

export default connect(mapStateToProps)(WindowManager) 

モジュール#2(store.js)輸入WindowManager/index.jsreducer機能と、それを使用しようとします。何らかの理由で

import { createStore, combineReducers } from 'redux'; 
import { reducer as WindowManagerReducer } from './WindowManager'; 

const initialState = { 
    // stuff 
}; 

const FetchApplicationsReducer = (state = initialState, action) => { 
    // stuff 

    return state; 
} 

export default createStore(
    combineReducers({ 
     applications: FetchApplicationsReducer, 
     ui: WindowManagerReducer, 
    }) 
) 

、store.jsはWindowManager/index.js前に実行なっているため、輸出は使用できません。

誰でもこれに参加できますか?

+0

詳細情報なし/最小限の再生で何が起こっているのかを言うのは難しいです。循環依存関係はありますか? – JMM

+0

問題の2つのモジュール間の循環依存性はありません。再現のために上記を満たしていないのでしょうか? – probablyup

+0

これは重要なのかどうかは分かりませんが、 'store.js'はモジュールマップ内で' WindowManager/index.js'の後にくるので、実行順序も定義すれば期待どおりに動作するはずです。 – probablyup

答えて

0

多くの調整の後、importの順番を変更すると問題が解決しました。それは複雑なツリーなので、プロジェクト全体をダンプしないようにここで表現するのは難しいですが、最終的にバベルのES6モジュールシステムの中にバグがあるかもしれないと思います。

+0

これはこれまでに作業しましたか?私は同様の問題をサーバー側のレンダリングとWebpackとの反応も使用していました – user3125280

関連する問題