2017-03-04 2 views
1

Ich migriere Webpack von Version 1 zu 2 in einem Projekt, an dem ich arbeite, und einer der Builds, die ich habe, ist für eine Abhängigkeiten-Datei, in der ich alle Abhängigkeiten offen legen die Window mit dem expose-loader von webpack.Verfügbarmachen von Redux mit Webpack 2

Es funktioniert gut, außer für Redux, die nicht ausgesetzt wird.

Dies sind die relevanten Teile meiner Konfiguration:

entry: { 
    dependencies: [ 
     'react', 
     'react-dom', 
     'react-router', 
     'redux', 
     'react-redux', 
     'redux-thunk', 
     'es6-promise', 
     'isomorphic-fetch' 
    ] 
}, 

und:

module: { 
    rules: [ 
     { 
      test: /\.js$/, 
      use: [ 
       'babel-loader' 
      ], 
      include: path.join(__dirname, 'src') 
     }, 
     { 
      test: require.resolve('react'), 
      use: 'expose-loader?React' 
     }, 
     { 
      test: require.resolve('react-dom'), 
      use: 'expose-loader?ReactDOM' 
     }, 
     { 
      test: require.resolve('react-router'), 
      use: 'expose-loader?ReactRouter' 
     }, 
     { 
      test: require.resolve('redux'), 
      use: 'expose-loader?Redux' 
     }, 
     { 
      test: require.resolve('react-redux'), 
      use: 'expose-loader?ReactRedux' 
     }, 
     { 
      test: require.resolve('redux-thunk'), 
      use: 'expose-loader?ReduxThunk' 
     }, 
     { 
      test: require.resolve('isomorphic-fetch'), 
      use: 'expose-loader?fetch' 
     } 
    ] 
} 

Auch meine babel Presets hier:

"presets": [ 
    "react", 
    ["es2015", { "modules": false }], 
    "stage-2" 
], 

Wenn ich den Build laufen bekomme ich diese Ausgabe:

enter image description here

Beachten Sie, dass Redux durch Funktionen hinzugefügt wird.

Irgendeine Idee, wie man das löst?

Antwort

2

Sieht aus wie Webpack kann nicht automatisch reduce und andere Module mit einem einfachen String-Verweis auflösen, wie Sie in einer Liste Einträge haben.

Das Setzen von console.log in expose-loader/index.js verursachte diesen Ausgang. was zeigt, dass Redux und andere nicht einmal durch den Expose Loader kommen.

enter image description here

Einträge ändern Liste dazu sollte das Problem lösen.

entry: [ 
     require.resolve('redux'), 
     require.resolve('react'), 
     require.resolve('react-dom'), 
     require.resolve('react-router'), 
     require.resolve('react-redux'), 
     require.resolve('redux-thunk'), 
     require.resolve('es6-promise'), 
     require.resolve('isomorphic-fetch') 
    ], 
+0

Danke Mann! Genau das habe ich gebraucht. –