如何停止 React webpack 应用程序中的无限刷新?

How to stop infinite refresh in react webpack app?

当我更改 TS 文件时,Webpack 不会停止刷新页面。 控制台显示:@ebpack 5.66.0 编译成功

我用谷歌搜索了这个并尝试了不同的插件,但它们没有用。 温和的刷新插件只是停止刷新并从 ts-loader 中排除 JS 文件根本不起作用。 git中的相关问题也没有给出结果。

webpack.config.json:

const webpack = require('webpack');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const HtmlWebPackPlugin = require("html-webpack-plugin");
const HTMLInlineCSSWebpackPlugin = require("html-inline-css-webpack-plugin").default;
const InlineChunkHtmlPlugin = require('react-dev-utils/InlineChunkHtmlPlugin');

const htmlWebpackPlugin = new HtmlWebPackPlugin({
    template: "./src/index.html",
    filename: "./index.html",
    inlineSource: '.(js|css)$',
    inject: 'body',
});

module.exports = {
    entry: ['./src/index.tsx', './src/main.css'],
    resolve: {
        extensions: ['.js', '.jsx', '.ts', '.tsx'],
        fallback: {
            "path": require.resolve("path-browserify"),
            "os": require.resolve("os-browserify/browser"),
            "url": require.resolve("url"),
            "tty": require.resolve("tty-browserify"),
            "minimatch": require.resolve("minimatch"),
            "process": require.resolve("process")
        },
    },
    module: {
        rules: [{
                test: /\.tsx?$/,
                exclude: [/node_modules/, /\.js$/, /\.d\.ts$/, /dist/],
                loader: 'ts-loader',
                options: {
                    configFile: 'tsconfig.json',
                }
            },
            {
                test: /\.css$/,
                use: [
                  MiniCssExtractPlugin.loader,
                  "css-loader"
                ]
            }
        ],
    },
    output: {
        filename: 'bundle.js',
        publicPath: '',
    },
    plugins: [
        new webpack.ProvidePlugin({
            process: 'process',
          }),
        new MiniCssExtractPlugin({
            filename: "main.css",
            chunkFilename: "mainc.css"
        }),
        htmlWebpackPlugin,
        new HTMLInlineCSSWebpackPlugin(),
        new InlineChunkHtmlPlugin(HtmlWebPackPlugin, [/bundle/]),
    ]
};

package.json:

{
    "name": "browser",
    "version": "0.0.0",
    "scripts": {
        "build": "webpack --mode development",
        "start": "webpack serve --mode development --port 3000"
    },
    "devDependencies": {
        "@types/chrome": "^0.0.163",
        "@types/jquery": "^3.5.10",
        "@types/node": "^16.11.7",
        "@types/react": "^17.0.34",
        "@types/react-dom": "^17.0.11",
        "@types/vscode": "^1.62.0",
        "@types/vscode-webview": "^1.57.0",
        "css-loader": "^6.5.1",
        "html-inline-css-webpack-plugin": "^1.11.1",
        "html-webpack-plugin": "^5.5.0",
        "mini-css-extract-plugin": "^2.4.6",
        "react-dev-utils": "^12.0.0",
        "ts-loader": "^9.2.6",
        "typescript": "^4.5.4",
        "webpack": "^5.66.0",
        "webpack-cli": "^4.9.1",
        "webpack-dev-server": "^4.7.3"
    },
    "dependencies": {
        "ace-builds": "^1.4.13",
        "axios": "^0.24.0",
        "bootstrap": "^5.1.3",
        "jquery": "^3.6.0",
        "minimatch": "^5.0.1",
        "mobx": "^6.3.6",
        "mobx-react": "^7.2.1",
        "os-browserify": "^0.3.0",
        "path-browserify": "^1.0.1",
        "process": "^0.11.10",
        "react": "^17.0.2",
        "react-ace": "^9.5.0",
        "react-bootstrap": "^2.0.2",
        "react-dom": "^17.0.2",
        "redoc": "^2.0.0-rc.66",
        "styled-components": "^5.3.5",
        "tty-browserify": "0.0.1",
        "url": "^0.11.0",
        "uuid": "^8.3.2"
    }
}

您最好将 InlineChunkHtmlPlugin 测试从 /bundle/ 更改为 /runtime/

替换
new InlineChunkHtmlPlugin(HtmlWebPackPlugin, [/bundle/])
new InlineChunkHtmlPlugin(HtmlWebPackPlugin, [/runtime~.+[.]tsx/])

new InlineChunkHtmlPlugin(HtmlWebPackPlugin, [/runtime/])