在不重新启动服务器的情况下,Webpack bundle.js的更改未在Spring应用程序中显示?

时间:2019-04-11 09:46:26

标签: reactjs spring-boot webpack

我按照本教程创建了Spring-boot + ReactJs应用程序:https://spring.io/guides/tutorials/react-and-spring-data-rest/

应用程序以./mvnw spring-boot: run正常运行,并且我有一个NPM脚本"watch": "webpack --watch -d",该脚本运行以下配置

var path = require('path');

module.exports = {
    entry: './src/main/js/app.js',
    devtool: 'sourcemaps',
    cache: true,
    mode: 'development',
    output: {
        path: __dirname,
        filename: './src/main/resources/static/built/bundle.js'
    },
    module: {
        rules: [
            {
                test: path.join(__dirname, '.'),
                exclude: /(node_modules)/,
                use: [{
                    loader: 'babel-loader',
                    options: {
                        presets: ["@babel/preset-env", "@babel/preset-react"]
                    }
                }]
            }
        ]
    }
};

app.js已按预期编译到bundle.js中,但是如果刷新页面时我不使用./mvnw spring-boot:run重新启动服务器,则看不到更改。

我可能会丢失一些东西,也许是Spring-boot不在使用我的bundle.js文件,而是某种形式的副本吗?

1 个答案:

答案 0 :(得分:0)

我可以猜测嵌入式tomcat不会热重载静态文件。您可以尝试其中一些Refreshing static content with Spring MVC and Boot

但是也将分享我的解决方案,该解决方案是使用webpack-dev-server进行热加载和Web开发。

const path = require('path');
...
devServer: {
    contentBase: path.join(__dirname, 'src'),
    publicPath: '/build',
    port: 8000,
    proxy: {
        "**": "http://localhost:8080"
    }
},

,然后运行webpack-dev-server命令来运行它。它会即时编译您的应用程序,您的更改会立即反映出来,绝对可以尝试一下。