Webpack 网页包开发服务器&x2B;量角器-无效的主机标头 操作系统:macOS Sierra 10.12.4 节点:v7.9.0 净现值:5.0.3 黄瓜js:2.3.0 量角器:4.0.14 打字稿:2.2.2 网页包开发服务器:2.4.5

Webpack 网页包开发服务器&x2B;量角器-无效的主机标头 操作系统:macOS Sierra 10.12.4 节点:v7.9.0 净现值:5.0.3 黄瓜js:2.3.0 量角器:4.0.14 打字稿:2.2.2 网页包开发服务器:2.4.5,webpack,protractor,webpack-dev-server,Webpack,Protractor,Webpack Dev Server,嗨 我在版本>2.4.3的webpack dev server上运行量角器测试时遇到问题。当我运行测试时,浏览器显示消息:“无效主机头”,测试失败。如果我将webpack dev server的版本更改为2.4.2,一切都正常。我知道webpack中的选项“public”,但我不知道我应该将哪个主机或ip放入量角器。我想我什么都试过了。这是我的webpack.config: 'use strict'; const HtmlWebpack = require('html-webpack-plug

我在版本>2.4.3的webpack dev server上运行量角器测试时遇到问题。当我运行测试时,浏览器显示消息:“无效主机头”,测试失败。如果我将webpack dev server的版本更改为2.4.2,一切都正常。我知道webpack中的选项“public”,但我不知道我应该将哪个主机或ip放入量角器。我想我什么都试过了。这是我的webpack.config:

'use strict';

const HtmlWebpack = require('html-webpack-plugin');
const path = require('path');
const webpack = require('webpack');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const extractPlugin = new ExtractTextPlugin({
   filename: 'main.css'
});
const CleanWebpack = require('clean-webpack-plugin');

const rootDir = path.resolve(__dirname);

module.exports = {
    devServer: {
        contentBase: path.resolve(rootDir, 'dist'),
        port: 3000,
        host: '0.0.0.0',
        disableHostCheck: false,
        public: '172.23.0.1'
    },
    watchOptions: {
        poll: true
    },
    devtool: 'source-map',
    entry: {
        "bundle": "./src/webpack.main.js",
        "plugins": "./src/plugins.js"
    },
    output: {
        path: path.resolve(__dirname, "dist"),
        filename: "[name].js",
        sourceMapFilename: '[file].map'
        // publicPath: "/dist"
    },
    resolve: {
        extensions: [ '.js', '.ts' ]
    },
    module: {
        exprContextCritical: false,
        rules: [
            {
                test: /\.html$/,
                use: [
                    {
                        loader: 'file-loader',
                        options: {
                            name: '[name].[ext]'
                        },
                    },
                    { loader: 'extract-loader' },
                    { loader: 'html-loader' }
                ],
                exclude: path.resolve(__dirname, 'src/index.html')
            },
            {
                test: /\index.html$/,
                loader: ['html-loader']
            },
            {
                test: /\.ts$/,
                loader: 'ts-loader',
                exclude: /node_modules/
            },
            {
                test: /\.(scss|css)$/,
                use: extractPlugin.extract({
                    use: ['css-loader', 'sass-loader']
                })
            },
            {
                test: /\.(jpg|png|gif|eot|ttf|svg|woff|woff2)$/,
                use: [{
                    loader: 'file-loader',
                    options: {
                        name: '[name].[ext]',
                        outputPath: 'img/',
                        publicPath: 'img/'
                    }
                }]
            },
        ],
    },
    plugins: [
        new CleanWebpack(['dist']),
        extractPlugin,
        new HtmlWebpack({
            template: 'src/index.html'
        }),
        new webpack.ProvidePlugin({
            $: "jquery",
            jQuery: "jquery",
            "window.jQuery": "jquery",
            "Tether": 'tether'
        }),
        new HtmlWebpackPlugin({
            template: './src/index.html',
            filename: 'index.html',
            inject: 'body'
        }),
    ],
};
我将public选项设置为:172.23.0.1,以便在浏览器中打开docker应用程序(172.23.0.1是docker网络中的主机ip)

这是我的dragrator.config:

// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts

var webpack = require('webpack');
var WebpackDevServer = require('webpack-dev-server');
var webpackConfig = require('./webpack.config');
var deasync = require('deasync');
var server;

exports.config = {
    // seleniumAddress: 'http://selenium-standalone-chrome:4444/wd/hub',
    baseUrl: 'http://0.0.0.0:3000',
    useAllAngular2AppRoots: true,
    directConnect: true,
    beforeLaunch: () => {

        var isServerReady = false;
        var isBundleReady = false;
        var compiler = webpack(webpackConfig, () => {
            isBundleReady = true;
            console.log('Dumpstere bundled...');
        });

        server = new WebpackDevServer(compiler, {});

        server.listen(3000, () => {
            isServerReady = true;
            console.log('Dumpstere started...');
        });

        deasync.loopWhile(() => !isServerReady || !isBundleReady);
    },
    afterLaunch: () => {
        server.close();
    },
    capabilities: {
        browserName:'chrome'
    },

    framework: 'custom',

    frameworkPath: require.resolve('protractor-cucumber-framework'),
    specs: [
        './features/*.feature'
    ],
    cucumberOpts: {
        require: ['./features/step_definitions/*.ts'],
        tags: [],
        strict: false,
        format: ["pretty", "json:report/json/cucumber_report.json"],
        dryRun: false,
        compiler: ["ts:ts-node/register"]
    },

    onPrepare: function () {
        browser.ignoreSynchronization = true;
        browser.manage().window().maximize();
    }
};