WebSocket连接到'ws://localhost:4000/sockjs-node/612/2pdjfv15/websocket'失败:在接收握手响应之前关闭连接的错误。

26

我正在使用Browser Sync与webpack-dev-server,并且在使用browser sync时遇到问题..!! 只有表单填充有效,点击、滚动在browser sync中不起作用,并且没有任何编译时错误发生,但是上述事情都不起作用..!! 这是我的"Webpack.dev.js"文件,那么这里出了什么问题..?

const helpers = require('./helpers');
const buildUtils = require('./build-utils');
const webpackMerge = require('webpack-merge'); 
const commonConfig = require('./webpack.common.js');

const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin');
const NamedModulesPlugin = require('webpack/lib/NamedModulesPlugin');
const EvalSourceMapDevToolPlugin = require('webpack/lib/EvalSourceMapDevToolPlugin');
const BrowserSyncPlugin = require('browser-sync-webpack-plugin');

module.exports = function (options) {
  const ENV = process.env.ENV = process.env.NODE_ENV = 'development';
  const HOST = process.env.HOST || 'localhost';
  const PORT = process.env.PORT || 3000;

  const METADATA = Object.assign({}, buildUtils.DEFAULT_METADATA, {
    host: HOST,
    port: PORT,
    ENV: ENV,
    HMR: helpers.hasProcessFlag('hot'),
    PUBLIC: process.env.PUBLIC_DEV || HOST + ':' + PORT
  });

  return webpackMerge(commonConfig({ env: ENV, metadata: METADATA  }), {

    output: {


      path: helpers.root('dist'),


      filename: '[name].bundle.js',


      sourceMapFilename: '[file].map',


      chunkFilename: '[id].chunk.js',

      library: 'ac_[name]',
      libraryTarget: 'var',
    },

    module: {

      rules: [


        {
          test: /\.css$/,
          use: ['style-loader', 'css-loader'],
          include: [helpers.root('src', 'styles')]
        },

        {
          test: /\.scss$/,
          use: ['style-loader', 'css-loader', 'sass-loader'],
          include: [helpers.root('src', 'styles')]
        },

      ]

    },

    plugins: [
      new EvalSourceMapDevToolPlugin({
        moduleFilenameTemplate: '[resource-path]',
        sourceRoot: 'webpack:///'
      }),


      new NamedModulesPlugin(),


      new LoaderOptionsPlugin({
        debug: true,
        options: { }
      }),

      new BrowserSyncPlugin({
        // browse to http://localhost:3000/ during development,
        host: 'localhost',
        port: 4000,
        proxy: 'http://localhost:3000'
      },
      {
        reload: false
      })
    ],

    devServer: {
      port: METADATA.port,
      host: METADATA.host,
      hot: METADATA.HMR,
      public: METADATA.PUBLIC,
      historyApiFallback: true,
      watchOptions: {

        ignored: /node_modules/
      },

      setup: function(app) {
        // For example, to define custom handlers for some paths:
        // app.get('/some/path', function(req, res) {
        //   res.json({ custom: 'response' });
        // });
      },
    },

    node: {
      global: true,
      crypto: 'empty',
      process: true,
      module: false,
      clearImmediate: false,
      setImmediate: false,
      fs: 'empty'
    }

  });
};

你有找到任何解决方案吗? - Wiki
尝试使用 https://www.npmjs.com/package/webpack-plugin-serve 可能会很值得,因为它带有 liveReload 选项。 - Juho Vepsäläinen
1个回答

1
我最近在使用Angular 11(Ivy)时遇到了这个问题。解决方案应该适用于webpack-dev-server,因为这是相同的行为。
当在单独的web服务器端点上加载webpack-dev-server应用程序时,会出现问题。sockjs-node连接认为它需要使用相对于Web根目录的绝对URL,但这不起作用,因为您的Web服务器根指向与开发Web服务器不同的进程/端口/主机。
我搜索了互联网上有关要设置哪个CLI或属性以覆盖它使用的基础的内容,但我还没有找到任何东西(尚未!)
解决方案:每次更改后构建项目并进行测试。通常非生产构建只需要一分钟,所以还好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接