Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将webpack dev server与多个条目和HMR一起使用_Webpack_Webpack Dev Server_Webpack 2_Webpack Hmr_Hot Module Replacement - Fatal编程技术网

将webpack dev server与多个条目和HMR一起使用

将webpack dev server与多个条目和HMR一起使用,webpack,webpack-dev-server,webpack-2,webpack-hmr,hot-module-replacement,Webpack,Webpack Dev Server,Webpack 2,Webpack Hmr,Hot Module Replacement,我的webpack.config.js中有3个条目,它们生成3个不同的HTML文件。我这样做是为了在不同的域上托管它们: index.html= site.html= forms.html= 现在我有一个定制的dev服务器,它会启动webpack构建三次,这样我就可以指出索引文件应该是什么。我想做的是将其更改为单个服务器,并使用主机头来决定加载哪个索引文件 我尝试这样做的方式是: devServer: { host: '0.0.0.0', /// En

我的webpack.config.js中有3个条目,它们生成3个不同的HTML文件。我这样做是为了在不同的域上托管它们:

  • index.html=
  • site.html=
  • forms.html=
现在我有一个定制的dev服务器,它会启动webpack构建三次,这样我就可以指出索引文件应该是什么。我想做的是将其更改为单个服务器,并使用主机头来决定加载哪个索引文件

我尝试这样做的方式是:

    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,

        // enable HMR on the server
        hot: true,
        overlay: true,
        after: (app) => {
            /* Server the dev settings that are normally injected via nginx */
            app.get('/settings.js', function(req, res) {
                const fullPath = path.join(__dirname, "settings.dev.js");
                res.sendFile(fullPath);
            });

            app.get('*', function(req, res, next) {
                const headers = req.headers;
                const host = headers['host'];

                if (
                    /* We only wan't to override GET */
                    (req.method !== 'GET') ||

                    /* They didn't send an accept header */
                    (!headers || typeof headers.accept !== 'string') ||

                    /* They prefer JSON */
                    (headers.accept.indexOf('application/json') === 0) ||

                    /* They don't want HTML */
                    (!acceptsHtml(headers.accept))
                ) {
                    console.log("TERMINATING EARLY", req.method, headers.accept);
                    return next();
                }

                let indexFile = 'index.html';

                switch(host) {
                    case "site":
                        indexFile = 'site.html';
                        break;
                    case "forms":
                        indexFile = 'forms.html';
                        break;
                }

                console.log("BEFORE REQ URL", req.url);
                req.url = `${indexFile}`;
                console.log("AFTER REQ URL", req.url);
                next();
            });

        },
    }

这对网站的初始负载有效,但我得到404的其他一切。我应该怎么做而不是
req.url
?我无法使用
res.sendFile
,因为webpack正在编译内存中的所有内容。

是否使用多个编译器?