【问题标题】:Error in webpack installing with jsx compiling使用 jsx 编译安装 webpack 时出错
【发布时间】:2019-07-07 08:57:18
【问题描述】:

我安装了 webpack,这是我的 webpack.config

 const path = require('path');
const HtmlWebPackPlugin = require('html-webpack- 
 plugin');
const MiniCssExtractPlugin = require('mini-css-extract- 
 plugin');
module.exports ={
mode:'development',
entry:'./src/scripts/app.js',
output:{path: path.resolve(__dirname,'dist') , 
filename:'bundle.js'},
module:{rules:[
    {
        test:/\.jsx?/i,
        exclude:/node_modules/i,
        use:{
            loader:'babel-loader',
            options:{
                presets:['@babel/preset-env']
            }
        }

  },
  {
    test:/\.s?css?/i,
    use:[
        {
            loader:MiniCssExtractPlugin.loader,
            options:{
                publicPath:'/dist'
            }
        },
        'css-loader',
        'sass-loader'
    ]
  }
 ]},
 plugins:[
    new HtmlWebPackPlugin({
        template:'./src/index.html',
        filename:'index.html'
    }),
    new MiniCssExtractPlugin({
        filename:'main.css'
    })
  ]
   }

这是我的 package.json

    {
 "name": "webp",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
 "test": "test",
 "build": "webpack"
 },
 "keywords": [],
 "author": "",
 "license": "ISC",
"devDependencies": {
"@babel/core": "^7.2.2",
"@babel/preset-env": "^7.3.1",
"babel-loader": "^8.0.5",
"css-loader": "^2.1.0",
"html-webpack-plugin": "^3.2.0",
"mini-css-extract-plugin": "^0.5.0",
"node-sass": "^4.11.0",
"sass-loader": "^7.1.0",
"webpack": "^4.29.3",
"webpack-cli": "^3.2.3"
 },
"dependencies": {
"react": "^16.8.1",
"react-dom": "^16.8.1"
}
}

但它无法编译 jsx 。给我这个错误

     class myHeading extends React.Component{
     6 |     render(){
  >  7 |         return <h1> A header will be rendered 
                            here</h1>
       |                ^
     8 |     }
     9 | }
    10 | 

我和我的朋友在我们的课程中遵循相同的路径,他们安装它没有问题,但我不知道我的安装有什么问题。 任何人都可以帮助我吗?将不胜感激。

【问题讨论】:

    标签: reactjs webpack jsx


    【解决方案1】:

    您需要 @babel/preset-react 才能转译 jsx。您可以使用 NPM 或 Yarn 使用以下脚本安装它:

    # NPM
    npm i -D @babel/preset-react
    # Yarn
    yarn add -D @babel/preset-react
    

    您还需要将预设添加到您的 babel 加载器,如下所示:

    const path = require("path");
    const HtmlWebPackPlugin = require("html-webpack-plugin");
    const MiniCssExtractPlugin = require("mini-css-extract-plugin");
    
    module.exports = {
      mode: "development",
      entry: "./src/scripts/app.js",
      output: { path: path.resolve(__dirname, "dist"), filename: "bundle.js" },
      module: {
        rules: [
          {
            test: /\.jsx?/i,
            exclude: /node_modules/i,
            use: {
              loader: "babel-loader",
              options: {
                presets: ["@babel/preset-env", "@babel/preset-react"]
              }
            }
          },
          {
            test: /\.s?css?/i,
            use: [
              {
                loader: MiniCssExtractPlugin.loader,
                options: {
                  publicPath: "/dist"
                }
              },
              "css-loader",
              "sass-loader"
            ]
          }
        ]
      },
      plugins: [
        new HtmlWebPackPlugin({
          template: "./src/index.html",
          filename: "index.html"
        }),
        new MiniCssExtractPlugin({
          filename: "main.css"
        })
      ]
    };
    

    【讨论】:

    • 非常感谢,你帮了我太多。这对我来说是两个多星期的问题。阿加尼谢谢sssss
    猜你喜欢
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 2017-12-15
    • 2016-12-08
    • 1970-01-01
    相关资源
    最近更新 更多