【问题标题】:Webpack@4.41 with babel-loader@8 error while building react scripts (Module parse failed: Unexpected token)Webpack@4.41 在构建反应脚本时出现 babel-loader@8 错误(模块解析失败:意外令牌)
【发布时间】:2020-06-13 21:30:17
【问题描述】:

我正在尝试实现 webpack@4.41 和 babel-loader@8 来处理反应脚本。我在捆绑 jsx 语法时遇到了麻烦(webpack babel-loader 在遇到任何 html 标签时出现错误退出。

我使用命令:npm run build (webpack --mode production)

index.js

// Import the wrapper component, and the the creator function
import React  from 'react';
import ReactDOM from 'react-dom';


class App extends React.Component {
  render () {
    return <p> Hello React project</p>;
  }
}

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

通常的错误信息:

[0] ./src/index.js 339 bytes {0} [built] [failed] [1 error]

ERROR in ./src/index.js 9:11
Module parse failed: Unexpected token (9:11)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
| class App extends React.Component {
|   render () {
>     return <p> Hello React project</p>;
|   }
| }
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! webpack_test@1.0.0 build: `webpack --mode production`
npm ERR! Exit status 2

在尝试执行以下操作时,捆绑也经常失败:render(&lt;App/&gt;, document.getElementById('app')); 从另一个文件导入 App 组件或定义呈现 html 标签的 App 函数后。

webpack.config.js

var webpack = require('webpack');
var path = require('path');

module.exports = {
  output: {
    filename: 'bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader",
          options: {
            presets: ['@babel/preset-env', '@babel/preset-react']
          }
        }
      }
    ]
  }
};

package.json

  "name": "webpack_test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build": "webpack --mode production"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.8.6",
    "@babel/preset-env": "^7.8.6",
    "@babel/preset-react": "^7.8.3",
    "babel-loader": "^8.0.6",
    "webpack": "^4.41.6",
    "webpack-cli": "^3.3.11"
  },
  "dependencies": {
    "react": "^16.13.0",
    "react-dom": "^16.13.0",
    "react-router-dom": "^5.1.2"
  }
}

我尝试将 index.js 文件与 @babel/cli 捆绑在一起,这似乎有效(命令 npx babel --presets @babel/preset-env,@babel/preset-react )。我已经尝试解决这个问题太久了,我真的很感激一些指点 :) 感谢您的帮助,

更新 webpack.config.js 有一个尾随空格,因此 webpack 无法识别。

【问题讨论】:

    标签: javascript reactjs webpack ecmascript-6 babeljs


    【解决方案1】:

    你可以检查我的配置

    我的网页包

    {
            test: /\.(js|jsx)$/,
            exclude: /node_modules/,
            use: ["babel-loader", "eslint-loader"]
    },
    

    .babelrc 文件

    {
        "presets": ["@babel/preset-env", "@babel/preset-react"],
        "plugins": [
            "@babel/plugin-proposal-class-properties",
            "@babel/plugin-transform-runtime"
        ]
    }
    

    package.json

        "@babel/core": "^7.8.4",
        "@babel/plugin-proposal-class-properties": "^7.8.3",
        "@babel/plugin-transform-runtime": "^7.8.3",
        "@babel/preset-env": "^7.8.4",
        "@babel/preset-react": "^7.8.3",
    

    更新:

    确保将 "eslint": "^6.8.0" 安装到你的 package.json 的 devDependencies 部分

    【讨论】:

    • 感谢您的回答。我尝试将 webpack 规则更新为: use: ["babel-loader", "eslint-loader"], installed "@babel/plugin-proposal-class-properties": "^7.8.3", "@babel/plugin- transform-runtime": "^7.8.3", "eslint-loader": "^3.0.3",并将 .babelrc 编辑为:{ "presets": ["@babel/preset-env", "@babel/ preset-react"], "plugins": [ "@babel/plugin-proposal-class-properties", "@babel/plugin-transform-runtime" ] } 错误仍然存​​在,不幸的是......
    • 你能在github上分享你的完整代码吗?我去看看
    • 这里是前端应用程序,github.com/rmilosic/mojkredit.si/tree/dev/client
    • 我可以毫无问题地构建您的代码。再次检查我的答案
    猜你喜欢
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 2021-11-29
    • 2020-11-20
    • 2021-11-26
    • 2020-07-11
    • 2017-09-15
    • 1970-01-01
    相关资源
    最近更新 更多