【问题标题】:Hetting error in react build with webpack使用 webpack 构建反应时出错
【发布时间】:2021-12-31 11:21:27
【问题描述】:

我正在使用 react.js 和 web pack。运行 NPM run build 命令时出现此错误,我正在学习如何使用 webpack 进行构建,所以我第一次尝试但收到此错误。请帮忙!

我从一些 webpack 教程网站编写了这段代码。

assets by status 1.05 KiB [cached] 2 assets
./src/index.js 796 bytes [built] [code generated] [1 error]

ERROR in ./src/index.js 13:2
Module parse failed: Unexpected token (13:2)
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
| const ProviderComponent = ()=>{
|   return (
>   <Provider store={store} >
|       <App/>
|     </Provider>

webpack 5.65.0 compiled with 1 error in 901 ms
npm ERR! code ELIFECYCLE
npm ERR! errno 1

网页包文件

const port = process.env.PORT || 8080;
const path = require('path');
const HtmlWebPackPlugin = require('html-webpack-plugin');

module.exports = {
    output :{
        path:path.join(__dirname,'/dist'),
        filename:'main.[fullhash].js'
    },
    module:{
        rules:[{
            test:/\.(js|jsx)$/,
            exclude:/node_modules/,
        },
           {
                test: /\.less$/,
                use: [
                    { loader: 'style-loader' },
                    { loader: 'css-loader' },
                    { loader: 'less-loader' }
                ]
            },
        ]
        
    },
    resolve: 
    {
        mainFiles: ['index', 'Index'],
        extensions: ['.js', '.jsx','.css'],
        alias: {
            '@': path.resolve(__dirname, 'src'),
        }
    }, 
    plugins:[
      new HtmlWebPackPlugin({
      template:'./public/index.html'
      })
    ],

    devServer:{
        host:'localhost',
        port:port,
        historyApiFallback:true,
        open:true
    }
}

【问题讨论】:

    标签: reactjs webpack build bundle


    【解决方案1】:

    您的index.js 中有JSX,这不是标准的javascript。 Webpack 默认只能转译标准的 javascript,为了转译 JSX 这个 React 特性,你需要使用一些可以帮助 webpack 识别 JSX 语法的东西,webpack 把这个东西叫做loaders

    你可以使用不同的加载器,例如你应该使用babel-loader来告诉webpack如何理解JSX。

    babel-loader 内部使用 Babel.js,这是一个用于将非标准 javascript 转换为标准 javascript 的库。

    最好先熟悉 Babel.js,然后在 webpack 中使用。但是现在,您需要的是:

    安装 babel (with preset-react) 和 babel-loader

    npm install -D babel-loader @babel/core @babel/preset-env @babel/preset-react
    

    将 babel 添加到你的 webpack js|jsx 文件规则

    你可以像我在这里做的那样在 webpack 配置文件中设置 babel 选项,或者创建一个单独的文件来配置 babel 本身。你可以在Babel.js docs阅读更多关于它的信息。

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

    【讨论】:

    • 我已经制作了 babelrc 文件,这段代码是这样写的 { "presets": [ "@babel/preset-env", "@babel/preset-react" ], "plugins": [ [" @babel/transform-runtime"] ] } & 我安装这个包 npm i --save-dev webpack webpack-dev-server webpack-cli npm i --save-dev @babel/core babel-loader @babel/present- env @babel/presenr-react npm install --save @babel/runtime npm install --save-dev @babel/plugin-transform-runtime
    • @PuneetPhull 好的,那么你的 webpack 配置中至少需要 use: 'babel-loader'
    • ./src/index.js (./node_modules/babel-loader/lib/index.js!./node_modules/css-loader/dist/cjs.js!. /src/index.js) 模块构建失败(来自 ./node_modules/css-loader/dist/cjs.js):CssSyntaxError (1:1) C:\Users\NK\Desktop\React project\flipkart\src\index .js 未知单词 > 1 |从“反应”导入反应; | ^ 2 |从 'react-dom' 导入 ReactDOM; 3 |导入'./index.css'; @ ./src/index.js 8:6-140 22:17-24 26:0-110 26:0-110 27:22-29 27:33-47 27:50-64
    • @PuneetPhull 它告诉你有CssSyntaxError。请阅读错误。此外,编辑您的评论并将代码和错误放在反引号中,以便阅读。
    • ERROR in ./src/index.js (./node_modules/babel-loader/lib/index.js!./node_modules/css-loader/dist/cjs.js!./src/index.js) Module build failed (from ./node_modules/css-loader/dist/cjs.js): **CssSyntaxError** (1:1) C:\Users\NK\Desktop\React project\flipkart\src\index.js Unknown word &gt; 1 | import React from 'react'; | ^ 2 | import ReactDOM from 'react-dom'; 3 | import './index.css'; @ ./src/index.js 8:6-140 22:17-24 26:0-110 26:0-110 27:22-29 27:33-47 27:50-64
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    相关资源
    最近更新 更多