首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确配置webpack HMR中的babel-loader

正确配置webpack HMR中的babel-loader
EN

Stack Overflow用户
提问于 2017-12-20 02:19:11
回答 1查看 805关注 0票数 0

大约一周前,我在将HMR添加到我的项目中时遇到了一个问题,问题是它不工作,控制台显示HMR已启用,还检测到文件上的更改,但它没有重新呈现视图,控制台将会记录:

代码语言:javascript
复制
[HMR] Updated modules:
[HMR]  - ./app/src/components/app.jsx
[HMR] App is up to date.

但在视觉上不会发生任何变化,在代码检查器中也是如此。

经过大量的实验,我发现这个问题是由babel加载器引起的,它以某种方式干扰了webpacks马达或类似的东西。我通过在babel加载器中排除索引文件解决了这个问题,但是我不认为这是最好的方法,因为现在我不能在index.jsx文件中使用一些js特性。我想知道是否有更好的方法来解决这个问题,也许是在我的配置中,或者是在设置webpack热中间件的方法中。

这是我的webpack配置:

代码语言:javascript
复制
module.exports = {
  resolve: {
    extensions: ['*', '.js', '.jsx']
  },
  entry: [
    'webpack-hot-middleware/client', './app/src/index.jsx'
  ],
  output: {
    path: path.resolve(__dirname, 'build/js'),
    filename: 'bundle.js',
    publicPath: '/public'
  },
  devtool: 'cheap-module-source-map',
  module: {
    rules: [{
      test: /\.jsx?$/,
      exclude: /node_modules/,
      include: path.resolve(__dirname, 'app/src/'),
      exclude: path.resolve(__dirname, 'app/src/index.jsx'),
      use: [{
        loader: 'babel-loader',
        options: {
          presets: [
            'react-hmre'
          ],
          plugins: [
            'transform-object-rest-spread'
          ]
        }
      }],
    }]
  },
  plugins: [
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NoEmitOnErrorsPlugin()
  ]
}

下面是我如何在我的服务器中设置热中间件和react- hot -loader的方法:

代码语言:javascript
复制
const webpack = require('webpack')
const webpackDevMiddleware = require('webpack-dev-middleware')
const webpackHotMiddleware = require('webpack-hot-middleware')

const webpackConfig = require('./webpack.dev.config')
const compiler = webpack(webpackConfig)

app.use(webpackDevMiddleware(compiler, {
  noInfo: true,
  publicPath: webpackConfig.output.publicPath
}))

app.use(webpackHotMiddleware(compiler))

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-20 11:45:29

所以这是我认为的巴别塔配置,你需要在环境预设中选择modules: false,这样它就可以让webpack处理模块,这是一个新手错误,但是伙计,它让我疯狂了好几天。

环境预设的正确配置如下所示:

代码语言:javascript
复制
['env', {modules: false}]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47892992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档