如何让webpack publicPath不包含端口

时间:2017-12-20 17:30:04

标签: webpack webpack-dev-server webpack-hmr hot-module-replacement

我们有多个索引文件,我们从webpack-dev-server服务器:

index.html = http://eventapp.localhost
site.html = http://eventsite.localhost
forms.html = http://regsites.localhost

我们在这些服务器前面有一个nginx代理服务器,用于https和http。当webpack客户端连接到sockjs-node时,它似乎添加了端口并直接转到webpack-dev-server而不是通过我们的nginx代理。因此,如果您通过SSL,HMR不起作用,因为我们不使用https启动服务器。

有没有办法告诉它在进行sockjs协商时不要附加端口,只是让它继续使用nginx代理?

这就是我们配置服务器的方式:

 devServer: {
            host: '0.0.0.0',

            /// Enable gzip
            compress: true,
            contentBase: './dist',
            /* Theoretically, the public option is better but they only support a single host
             *
             * This is a security issue not using public.
             * */
            disableHostCheck: true,
            // Do not enable HMR on the server, it is enabled with --hot
            // hot: true,
            before: (app) => {
                /* Serve the dev settings that are normally injected via nginx */
                app.get('/settings.js', function (req, res) {
                    const fullPath = path.join(__dirname, settingsFile);
                    res.sendFile(fullPath);
                });
                app.use(historyFallback({verbose: false}));

            },
        },

这就是我们推出它的方式:

webpack-dev-server --hot-only --hot --env.BUILD_VERSION=development

我们正在使用来自react-dev-utils/webpackHotDevClient的此客户端,但它似乎尝试在没有端口的情况下进行连接,然后进行升级协商并尝试连接端口。

我们不能使用publicpublicPath配置选项,因为我们有多个索引。我们只需要发现连接的位置只使用window.location而不添加端口等额外信息。

0 个答案:

没有答案