【问题标题】:Webpack wont compile jsx file with reactWebpack 不会用 react 编译 jsx 文件
【发布时间】:2018-04-05 19:47:43
【问题描述】:

我正在尝试让我的 webpack 环境将 jsx/es6 语法编译回常规的 es5 javascript。但是,当我运行“开始”脚本时,它给了我一个指向 ReactDom.render 方法的语法错误。

我环顾四周,我认为我的 webpack.config.js 设置不正确。

webpack.config.js

module.exports = {
  entry: [
    './src/index.js'
  ],
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        use: ['babel-loader']
      }
    ]
  },
  resolve: {
    extensions: ['*', '.js', '.jsx']
  },
  output: {
    path: __dirname + '/dist',
    publicPath: '/',
    filename: 'bundle.js'
  },
  devServer: {
    contentBase: './dist'
  }
};

package.json

{
  "name": "react-boilerplate",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "bable": {
    "presets": [
      "env",
      "react",
      "stage-2"
    ]
  },
  "devDependencies": {
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.4",
    "babel-preset-env": "^1.6.1",
    "babel-preset-react": "^6.24.1",
    "babel-preset-stage-2": "^6.24.1",
    "webpack": "^4.5.0",
    "webpack-cli": "^2.0.13",
    "webpack-dev-server": "^3.1.1"
  },
  "dependencies": {
    "express": "^4.16.3",
    "react": "^16.3.1",
    "react-dom": "^16.3.1"
  },
  "scripts": {
    "start": "webpack-dev-server --config ./webpack.config.js --mode development"
  }
}

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render(<App />, document.getElementById('root'));

【问题讨论】:

  • 你有启用那些 Babel 预设的.babelrc 吗?你需要安装它们并告诉 Babel 启用它们。
  • 我没有 babelrc,因为我认为它是可选的。这是因为 artem 为我指明了方向。这样做有什么缺点吗?

标签: webpack babeljs webpack-dev-server


【解决方案1】:

尝试在loader options语句中使用babel预设react和es2015,像这样:

{
  test: /\.js$/,
  exclude: /(node_modules|bower_components)/,
  use: {
    loader: 'babel-loader',
    options: {
      presets: ['react', 'es2015']
    }
  }
}

【讨论】:

  • env 使用 webpack 中的最新预设。
  • 我喜欢这种方式,因为它只是删除了一个文件,而且看起来它属于那里,对吧?我的意思是,如果您声明要更改的内容以及更改的方式,那么将所有内容都放在同一个地方是有意义的吗?
  • 您应该使用['react', 'env'],因为这些是您在package.json 依赖项中实际拥有的内容。
  • 啊,好吧,我从 create-react-app 过来后现在正在学习 webpack,所以自从 webpack 4 刚问世以来,我从来没有真正学习过这个工具,似乎是个好时机
猜你喜欢
  • 1970-01-01
  • 2019-03-23
  • 2014-11-20
  • 1970-01-01
  • 1970-01-01
  • 2017-03-14
  • 2015-10-07
  • 2014-11-09
  • 2016-07-26
相关资源
最近更新 更多