1

Это происходит при перезагрузке или обновлении горячего модуля. Не знаю, почему это происходит. Я должен перезапустить процесс сборки, чтобы снова загрузить приложение.vendors.js: Uncaught TypeError: Не удается прочитать свойство «применять» неопределенного при использовании webpack

Все отлично до 2 горячих перезагрузок модуля и затем сборки брейков работает с ошибкой

vendors.js: Uncaught TypeError: Cannot read property 'apply' of undefined while using webpack

Ниже мой конфигурационный файл:

var webpack = require('webpack'); 
var HtmlWebpackPlugin = require('html-webpack-plugin'); 
var path = require('path'); 
var VendorChunkPlugin = require('webpack-vendor-chunk-plugin'); 
module.exports = { 
    'devtool': 'eval-source-map', 

    'entry': { 
    'vendor': [ 
     'react', 
     'react-dom', 
     'react-router', 
     'react-redux', 
     'redux-thunk', 
     'react-bootstrap', 
     'redux', 
     'redux-form', 
     'axios' 
    ], 
    'app': __dirname + '/src/main.js' 
    }, 
    'output': { 
    'path': __dirname + '/build', 
    'publicPath': '/', 
    'chunkFilename': '[id].[name].chunk.js', 
    'filename': '[name].[hash].js' 
    }, 

    'module': { 
    'loaders': [ 
     // JSX and JS transpilation using babel 
     { 
     'test': [/\.js$/, /\.jsx$/], 
     'exclude': /(node_modules|bower_components)/, 
     'loader': 'babel' 
     }, 
     // SASS modularization using style, css and postcss sass loader 
     { 
     'test': [/\.css$/, /\.scss$/], 
     'loader': 'style!css!sass' 
     }, 
     // Font path loader 
     { 
     'test': /\.(ttf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/, 
     'loader': 'file-loader?name=fonts/[name].[ext]' 
     }, 
     // Image path loader 
     { 
     'test': /\.(jpe?g|png|gif|svg)$/i, 
     'loaders': [ 
      'url-loader?limit=15000&name=images/[name].[ext]', 
      'image-webpack?bypassOnDebug&optimizationLevel=7&interlaced=false' 
     ] 
     } 
    ], 
    }, 

    'sassLoader': { 
    'includePaths': [ 
     path.resolve(__dirname, 'src/components/'), 
     path.resolve(__dirname, 'src/components/common/assets/') 
    ] 
    }, 

    'resolve': { 
    'root': [ 
     path.resolve(__dirname, 'src'), 
     path.resolve(__dirname, 'src/components/common/assets/'), 
     path.resolve(__dirname, 'src/components/common/'), 
     path.resolve(__dirname, 'node_modules') 
    ], 
    'extensions': ['', '.js', '.jsx', '.scss'], 
    }, 

    'plugins': [ 
    new webpack.HotModuleReplacementPlugin(), 
    new webpack.NoErrorsPlugin(), 
    new webpack.BannerPlugin("App has been developed by Company."), 
    new HtmlWebpackPlugin({ 
     'template': __dirname + '/src/index.tmpl.html' 
    }), 
    new webpack.optimize.CommonsChunkPlugin('vendor', 'vendors.js', Infinity), 
    new VendorChunkPlugin('vendor'), 
    new webpack.optimize.OccurenceOrderPlugin(), 
    new webpack.optimize.UglifyJsPlugin({ 
     'minimize': true, 
     'screw-ie8': true, 
     'mangle': false, 
     'compress': { 
     'warnings': false 
     }, 
     'output': { 
     'comments': false, 
     'semicolons': true, 
     } 
    }), 
    new webpack.optimize.DedupePlugin() 
    ], 

    'devServer': { 
    'contentBase': './build', 
    'host': '0.0.0.0', 
    'https': true, 
    'colors': true, 
    'compress': true, 
    'hot': true, 
    'historyApiFallback': true, 
    'inline': true, 
    // Display only errors to reduce the amount of output. 
    'stats': 'errors-only', 
    } 
}; 

Я не смог найти много об этой ошибке. Я также очистил кеш браузера и удалил все файлы cookie, но безрезультатно.

Я также проверил файл vendor.js. Он подсчитан, но я вижу, что он ломается над функцией перезагрузки горячего модуля. Любая помощь приветствуется. Спасибо в ожидании.

ответ

2

Вот некоторые из ответов, я прочитал из GitHub репо WebPack в:

Remove CommonsChunkPlugin. However,bundle sizes increase.

ИЛИ

Add cache: false

ИЛИ

Remove dedupe plugin while in development

На данный момент это единственное решение , Будем надеяться, что веб-пакет скоро исправит эту проблему.

Webpack Issue 959

+0

это до сих пор загадка. – Muhaimin

+0

, где бы я конкретно указал «cache: false»? – Nicky

+0

Добавить в конфигурационный объект webpack. –

2

Недавно я имел эту проблему и установил ее, добавив chunksSortMode: 'dependency', в моей конфигурации HtmlWebpackPlugin. Я точно не знаю , почему это сработало, но, очевидно, во время chunking что-то было не в порядке. Добавив, что увеличилось время сборки, но он решил проблему, поэтому я возьму ее.

В вашем случае ваш HtmlWebpackPlugin будет выглядеть следующим образом с изменением:

new HtmlWebpackPlugin({ 
     chunksSortMode: 'dependency', 
     'template': __dirname + '/src/index.tmpl.html' 
    }), 
+1

Я использую 'chunksSortMode: packageSort (['polyfills', 'vendor', 'app'])', это можно увеличить вручную, если вы хотите иметь элемент управления. –