zoukankan      html  css  js  c++  java
  • webpack热更新和常见错误处理

    时间:2016-11-03 10:50:54
    地址:https://github.com/zhongxia245/blog/issues/45

    webpack热更新

    一、要求

    1. 局部刷新修改的地方

    二、如何配置

    1、配置 webpack.config.js

    下面最重要的是两个地方

    • webpack入口文件,加上 'webpack-dev-server/client' 【必选】 , 'webpack/hot/only-dev-server', 【可选】

    • loader加载器, js|jsx 需要加上 react-loader 在最前面

       {
          test: /.(js|jsx)$/,
          loader: 'react-hot-loader!babel-loader',
          exclude: /node_modules/
        },
    

    2、配置node的web server服务器

    //热更新的关键一句
     app.use(require('webpack-hot-middleware')(compiler))
    

    完整的配置

    'use strict';
    var path = require('path')
    var webpack = require('webpack')
    
    module.exports = {
      devtool: 'source-map', 
      cache: true,
      entry: {
        app: [
          'webpack-dev-server/client',
          'webpack/hot/only-dev-server',
          path.join(__dirname, 'src/index')
        ],
        common: path.join(__dirname, 'src/common')
      },
      output: {
        path: path.join(__dirname, 'static'),
        filename: '[name].bundle.js',
        chunkFilename: 'chunk/[chunkhash:8].chunk.js',
        publicPath: '/FileManage/static/'
      },
      plugins: [
        new webpack.DefinePlugin({
          __DEV__: String(true)
        }),
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NoErrorsPlugin(),
        new webpack.optimize.CommonsChunkPlugin('vender.js')
      ],
      module: {
        loaders: [{
          test: /.(js|jsx)$/,
          loader: 'react-hot-loader!babel-loader',
          exclude: /node_modules/
        }, {
          test: /.css$/,
          loader: 'style-loader!css-loader'
        }, {
          test: /.(eot|woff|woff2|ttf|svg|png|jpg|gif)(?v=[d.]+)?$/,
          loader: 'file-loader?name=files/[hash:8].[ext]'
        }, {
          test: /.json$/,
          loader: 'json-loader'
        }, {
          test: /.less$/,
          loader: 'style!css!less'
        }]
      },
      resolve: {
        //自动扩展文件后缀名,意味着我们require模块可以省略不写后缀名
        extensions: ['', '.js', '.jsx'],
        root: [
          path.join(__dirname, '/src'),
          path.join(__dirname, '/'),
          path.join(__dirname, '../CommonComponent'),
          path.resolve(__dirname, '../BFD-UI')
        ],
        alias: {
          Loading: 'common/components/Loading/index.js',
        }
      }
    }
    

    server.js

    const express = require('express')
    const debug = require('debug')('app:server')
    const webpack = require('webpack')
    const webpackConfig = require('../build/webpack.config')
    const config = require('../config')
    
    const app = express()
    const paths = config.utils_paths
    
    app.use(require('connect-history-api-fallback')())
    
    // ------------------------------------
    // Apply Webpack HMR Middleware
    // ------------------------------------
    if (config.env === 'development') {
      const compiler = webpack(webpackConfig)
      app.use(require('webpack-dev-middleware')(compiler, {
        publicPath: webpackConfig.output.publicPath,
        contentBase: paths.client(),
        hot: true,
        quiet: config.compiler_quiet,
        noInfo: config.compiler_quiet,
        lazy: false,
        stats: config.compiler_stats
      }))
      app.use(require('webpack-hot-middleware')(compiler))
      app.use(express.static(paths.client('static')))
    } else {
      app.use(express.static(paths.dist()))
    }
    
    module.exports = app
    
    

    The following modules couldn't be hot updated: (Full reload needed)

    解决方案:参考原文地址 https://github.com/zhongxia245/blog/issues/45

  • 相关阅读:
    更新部分字段 NHibernate
    无法显示 XML 页。 使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试的解决办法
    初识使用Apache MINA 开发高性能网络应用程序
    生产者消费者问题理解与Java实现
    国内HTML5前段开发框架汇总
    mongodb的sharding架构搭建
    spring配置声明式事务
    如何设计页面固定广告的效果
    结合实际问题浅谈如何使用蒙特卡罗算法模拟投资分析
    多线程实现资源共享的问题学习与总结
  • 原文地址:https://www.cnblogs.com/zhongxia/p/6025795.html
Copyright © 2011-2022 走看看