当前位置: 首页 > 知识库问答 >
问题:

当我设置Babel es2015预设时,为什么热模块更换在webpack dev服务器上停止工作?

宫俊才
2023-03-14

我有一个小应用程序运行在WebpackDev服务器上(在dev环境上)。

热模块替换运行良好,我可以在编辑js文件时动态查看我的更改。

但只要我在babel loader配置中添加es2015预设,它就会停止工作!

webpack.config.js:

const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin');

process.env.BABEL_ENV = 'development';

module.exports = {
  entry: {
    app: ['react-hot-loader/patch', path.join(__dirname, 'src')]
  },
  output: {
    path: path.join(__dirname, 'build'),
    filename: '[name].js',
  },
  module: {
   rules: [
     {
       test: /\.js$/,
       include: path.join(__dirname, 'src'),
       use: {
         loader: 'babel-loader',
         options: {
           cacheDirectory: true,
           presets: ['react'],
         },
       },
     }
   ]
  },
  devServer: {
    historyApiFallback: true,
    quiet: true,
    hotOnly: true,
    contentBase: './build',
    host: 'my-host.local',
    port: 8091,
    watchOptions: {
      aggregateTimeout: 300,
      poll: 1000,
    },
  },
  plugins: [
    new HtmlWebpackPlugin({
      title: 'Webpack demo',
    }),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NamedModulesPlugin(),
    new FriendlyErrorsWebpackPlugin(),
    new webpack.WatchIgnorePlugin([
      path.join(__dirname, 'node_modules')
    ]),
  ],
};

src/index.js文件:

import React from 'react';
import ReactDOM from 'react-dom';
import Component from './Component';
import { AppContainer } from 'react-hot-loader';

const app = document.createElement('div');
document.body.appendChild(app);

const render = App => {
  ReactDOM.render(
    <AppContainer><App /></AppContainer>,
    app
  );
};

render(Component);

if (module.hot) {
  module.hot.accept('./Component', () => render(Component));
}

组成部分js

import React from 'react';

export default class Title extends React.Component {
  render() {
    return (
      <div>Ass</div>
    );
  }
}

. babelrc

{
  "presets": [
    [
      "react",
      "es2015",
      {
        "modules": false
      }
    ]
  ],
  "env": {
    "development": {
      "plugins": [
        "react-hot-loader/babel"
      ]
    }
  }
}

一旦我替换

presets: ['react'],

通过

presets: ['es2015', 'react'],

热模块更换功能停止工作...这里有人有线索吗?

(也请毫不犹豫地指出我的代码中的错误做法或可避免的复杂性)

共有1个答案

汝承载
2023-03-14

您需要以下。babelrc(我不知道为什么)。

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

其中阶段2是npm包babel-preset-stage-2

 类似资料:
  • 我有一个ArrayList,它应该在包含0个以上对象时启动报警服务,在包含0个对象时停止报警服务。 这是报警服务类。 这是on Receive方法广播接收器类 问题是,即使调用了报警服务的onDestroy方法,通知也不会停止。 我错过什么了吗? 谢谢

  • 问题内容: 在使用MVC3剃须刀做样本时,我写道: 在我更改web.config中的此键之前,我的ajax调用均无效: 我在这篇文章中阅读过:http : //weblogs.asp.net/owscott/archive/2010/11/17/mvc-3-ajax-redirecting-instead- of-updating- div.aspx 但是现在我的客户端验证了不能像以前那样工作。

  • 好的,我有一个包含两个restful web服务类Login.class和Subscribe.class的包,当我将它们部署到app engine并测试它们时,它们工作了。现在,我将一个名为User s.class的新服务类添加到包中。现在,我的服务都不起作用了。当我调用它们时,我得到一个内部服务器错误。 严重:产生介质类型冲突。The resource Methods public javax.

  • Yubikey 验证模块 在 YubiCloud 上创建一个 API 从 Yubico 获得一个 API 密钥,应用程序、上下文和服务器各需要一个 client id。 输入你的邮件地址 ,选择 Yubikey OTP 输入后触摸 Yubikey,你会获得这样的一组字符串: Client ID: <clientId> Secret Key: <secretKey> 把它们保存在一个安全的地方以备接

  • 问题内容: 我有一个正在构建的Python程序,可以通过以下两种方式之一运行:第一种是调用,它以友好的方式提示用户输入,然后通过该程序运行用户输入。另一种方法是调用“ ”,它将遍历所有友好的输入集合,并通过该程序一次运行整个文件的输入值。 问题是,当我运行时,它会从中导入一些变量/方法/等,并在运行此代码时: 在程序的第一行,它立即错误,因为它试图运行中的代码。 如何阻止Python运行要导入的“

  • 在java.library.path:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib64:/lib:/usr/lib上找不到基于APR的Apache Tomcat本机库,该库允许在生产环境中实现最佳性能 此外,错误是: tomcat已经开始运行了,但恐怕还会再次发生。服务器上最近没有更新或安装,原因是什么?此外,有什么可能的永久解决办法呢?