react 使用webpack打包问题汇总

博客主要解决两个问题。一是TypeError报错,原因是babel-loader等包版本不兼容,给出了能成功运行的版本组合,还提到rules配置时要将node_modules exclude掉;二是探讨工程中涉及antd框架时的配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、TypeError: src\foo.js: Cannot read property 'bindings' of null 问题原因: 1.babel-loader一系列包的版本不兼容有冲突,需要检查版本,下面是能够成功运行的版本的版本组合: "@babel/plugin-proposal-class-properties": "^7.1.0", "babel-core": "^7.0.0-bridge.0", "babel-loader": "^7.1.5", "babel-preset-env": "^2.0.0-alpha.20", "babel-preset-es2015": "^7.0.0-beta.3", "babel-preset-react": "^7.0.0-beta.3", 2.rules配置的时候没有将node_modules exclude掉, 例子:

{
                test: /\.js?$/,
                exclude: path.resolve(__dirname, "node_modules"),
                include: path.resolve(__dirname, "src"),
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['env', 'react'],
                        plugins: [
                            ["@babel/plugin-proposal-class-properties", { "loose": true }]
                        ]
                    },
                }
}
复制代码

二、工程中涉及到antd框架的时候,应该如何配置?

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

module.exports = {
    mode: "development",
    entry: path.resolve(__dirname, "./src/index.js"),
    output: {
        path: path.resolve(__dirname, "dist")
    },
    devServer: {
        contentBase: path.join(__dirname, "dist"),
        compress: true,
        port: 3000
    },
    resolve: {
        extensions: ['.js', '.jsx', '.less']
    },
    module: {
        rules: [
            {
                test: /\.css?$/,
                include: [path.join(__dirname, 'src'), path.join(__dirname, 'node_modules/antd')],
                use: [ 'style-loader', 'css-loader']
            },
            {
                test: /\.less?$/,
                include: [path.join(__dirname, 'src'), path.join(__dirname, 'node_modules/antd')],
                use: {
                    loader: "less-loader",
                    options:{
                        javascriptEnabled: true
                    }
                }
            },
            {
                test: /\.js?$/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['env', 'react'],
                        plugins: [
                            ["@babel/plugin-proposal-class-properties", { "loose": true }],
["import", { "libraryName": "antd", "style": "css" }],#按需加载antd里面的组件
                        ]
                    },
                }
            },
            {
                test: /\.(ico|png|svg|jpg|gif)$/,
                exclude: path.resolve(__dirname, "node_modules"),
                include: path.resolve(__dirname, "src"),
                use: [
                    {
                        loader: 'file-loader',
                        options: {}
                    }
                ]
            }
        ]

    },
    plugins: [
        new HtmlWebpackPlugin({template: './public/index.html'})
    ]
};
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值