私のアプリでコード分割/チャンクを設定するのは、require.ensure
を使用しています。だからここに私のルートです:ここでWebpackとReact.jsでのコード分割の設定
<Route path="profile"
getComponent={(location, cb) =>
{require.ensure(
[],
(require) => { cb(null, require('attendee/containers/Profile/').default) },
'attendee')}} />
は私のWebPACKの設定から関連する行されています。私は、ルート内のページに移動すると、私は必要なチャンクがダウンロードさんログに
const PATHS = {
app: path.join(__dirname, '../src'),
build: path.join(__dirname, '../dist'),
};
const common = {
entry: [
PATHS.app,
],
output: {
path: PATHS.build,
publicPath: PATHS.build + '/',
filename: '[name].js',
chunkFilename: '[name].js',
sourceMapFilename: '[name].js.map'
},
target: 'web',
devtool: 'cheap-module-eval-source-map',
entry: [
'bootstrap-loader',
'webpack-hot-middleware/client',
'./src/index',
],
output: {
publicPath: '/dist/',
},
plugins: [
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"development"',
},
__DEVELOPMENT__: true,
}),
new ExtractTextPlugin('main.css'),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin(),
new webpack.ProvidePlugin({
jQuery: 'jquery',
}),
],
見ます。しかし、ページは読み込まれません。
そして私は、コンソールで次のスタックトレースを参照してください。
Uncaught TypeError: Cannot read property 'call' of undefined
t @ main.js:10
(anonymous function) @ main.js:44637
window.webpackJsonp @ main.js:40
(anonymous function) @ attendee.js:1
それは文句を言う行はこれです:
return e[n].call(o.exports, o, o.exports, t)
二行目((無名関数)main.js @:私はconsole.log(require('./attendee/containers/Profile/').default)
をすれば、私は関数Aを取得し、
require('attendee/containers/Profile/').default
注:44637)は、本質的にこれです私はなぜそれが未定義であるかわかりません。もちろん、コードを実行すると、コードは機能しますが、それ以上のチャンクはありません。
だから私はrequire
で何か問題があります。どんなアイデアなのか?
私はこのプロジェクトでハッシュ履歴を使用しています - これが原因でしょうか?
更新:
もthis answerのように、バンドル・ローダーを試してみました。同じ結果。
おかげに設定してください代わりに
[]
のrequire.ensure
の最初の引数には、事前に特定するモジュールの依存関係の配列を必要としています。ドキュメントにはチャンク名である3番目のオプションの引数があることに言及しています。それは無視されません、チャンクのファイル名はattendee.jsです - webpackはそれを使用します。あなたは同じ名前のチャンクにバンドルされるためにいくつかのルートを取得すると思われます。 –3番目のパラメータを削除しようとしました - チャンクファイルの名前以外の変更はありません - 今や2.js –
ご迷惑をおかけして申し訳ございません。問題解決のためのアドバイスはありません。 –