继续让 [WDS] 断开连接!错误

Posted

技术标签:

【中文标题】继续让 [WDS] 断开连接!错误【英文标题】:Keep getting [WDS] Disconnected! error 【发布时间】:2016-08-23 09:33:10 【问题描述】:

我目前正在开始使用 ReactJs。但是,我在控制台中遇到了以下错误,这些错误未在终端中显示:

[WDS] Disconnected!sock.onclose@client?64c0:70EventTarget.dispatchEvent@eventtarget.js:49(匿名函数)@main.js:356

abstract-xhr.js:128 GET http://127.0.0.0/sockjs-node/info?t=1461853324372 net::ERR_CONNECTION_TIMED_OUT

它正在寻找我已在本地和全局安装的“sockjs-node”,但没有任何变化。不应该是搜索“node_modules”文件夹吗?

这是我的配置:

var webpack = require("webpack");
var path = require("path");


module.exports = 

    devtool: "inline-source-map",
    entry: [
        "webpack-dev-server/client?http://127.0.0.0/",
        "webpack/hot/only-dev-server",
        "./src"
    ],
    devServer: 
        contentBase: "./public",
        hot: true,    
        inline: true,
        quiet: false,
        noInfo: true,
        stats:  colors: true 
    ,
    output: 
        path: path.join(__dirname, "./public"),
        filename: "./assets/js/bundle.js"
    ,
    resolve: 
        modulesDirectrories: ["node_modules", "src"],
        extentions: ["", ".js"]
    ,
    module : 
        loaders: [
             
                test: /\.jsx?$/,
                exclude: "/node_modules/",
                loaders: ["react-hot-loader", "babel?presets[]=react,presets[]=es2015"] 
            , 
            
                test: /\.css$/,
                loader: "style-loader!css-loader"
            , 
            
                test: /\.gif$/,
                loader: "url-loader?mimetype=image/png"
            , 
            
                test: /\.woff(2)?(\?v=[0-9].[0-9].[0-9])?$/,
                loader: "url-loader?mimetype=application/font-woff"
            , 
            
                test: /\.(ttf|eot|svg)(\?v=[0-9].[0-9].[0-9])?$/,
                loader: "file-loader?name=[name].[ext]"
            
        ]
    ,
    plugins: [ 
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NoErrorsPlugin(),
        new webpack.DefinePlugin(
            "process.env": 
                NODE_ENV: JSON.stringify("development")
            
        )
    ]


任何帮助表示赞赏,并提前致谢。

【问题讨论】:

您的应用在端口 8080 上运行,但您的 HMR 正在侦听端口 80。试试这个:"webpack-dev-server/client?http://127.0.0.0:8080/" 感谢 lux... 现在它得到了套接字模块。但是仍然显示“[WDS] Disconnected!” 嗯,我的条目看起来完全一样,除了我使用的是 localhost 而不是本地 IP:entry = [ 'webpack-dev-server/client?http://localhost:8080', 'webpack/hot/only-dev-server', './src/bootstrap' ] 我的简单反应样板:github.com/mikechabot/react-boilerplatenpm install -> npm start 【参考方案1】:

我是这样修复的;

原样:

  entry: [
    "webpack-dev-server/client?http://localhost:9090",
    "webpack/hot/only-dev-server",
    "./src/app"
  ],

未来:

  entry: [
    "webpack-dev-server/client?http://127.0.0.0:8080",
    "webpack/hot/only-dev-server",
    "./src"
  ],

【讨论】:

未来部分的端口号不同,但对我来说,只需将 localhost 替换为 IP 地址即可解决问题。【参考方案2】:

对我来说,当我在根项目中创建文件时解决了:vue.config.js,内容如下:

module.exports = 
  devServer: 
    disableHostCheck: true
  

【讨论】:

来自docs:“不建议这样做,因为不检查主机的应用容易受到 DNS 重新绑定攻击。”【参考方案3】:

我遇到了同样的错误,因为我的 Webpack 配置为在 localhost:3000 上服务,但我有一个从 803000 的本地端口重定向,并且我正在使用访问开发应用程序http://localhost/。但在网络检查器中,我注意到 WDS 仍在查询超时的http://localhost:3000/sockjs-node/info?...

解决方案是告诉 Webpack 你的应用程序的“公共”地址,在我的例子中是这样的:

devServer: 
      https: false,
      port: 3000,
      public: 'http://localhost:80'
    

(注意:public:80 部分是可选的,因为 80 是默认值,但添加以明确表示,3000 是正在服务的端口,80 是端口被重定向到它。)

(不要问我为什么不直接使用port: 80,这很复杂。但我希望我的回答有一天能对像我这样的人有所帮助。)

【讨论】:

【参考方案4】:

问题似乎是你没有在urlwebpack-dev-server/client?http://127.0.0.0/中包含端口号

改变这个

entry: [
    "webpack-dev-server/client?http://127.0.0.0/",
    "webpack/hot/only-dev-server",
    "./src"
],

收件人:

entry: [
    "webpack-dev-server/client?http://127.0.0.0:8080/",
    "webpack/hot/only-dev-server",
    "./src"
],

【讨论】:

这个答案对我有用***.com/a/53631238/5403449【参考方案5】:

在我们的案例中,问题是由于webpack-dev-server 用于提供资产的主机名与运行应用程序的主机名不匹配造成的。

具体来说,我们的本地应用程序从https://dev.resumize.me 运行,但webpack-dev-server 正在从127.0.0.1 提供资产。

您可以使用选项--host 控制webpack-dev-server 使用的主机名。所以在我们的例子中,我们必须使用以下方式启动它:

webpack-dev-server.js --host dev.resumize.me --https

希望这会有所帮助。

【讨论】:

谢谢!我通过 ngrok(隧道服务)运行我的网站。了解 --host 选项会有所帮助。但是我可以指定多个主机(例如 localhost 和 mytunnel.ngrok.com)吗? @morgler 恐怕你不能指定多个主机。【参考方案6】:

development.js 文件中尝试对dev_server 使用以下设置:

dev_server: 
    host: '127.0.0.0'
    port: 8080
    https: false
    disableHostCheck: true

【讨论】:

【参考方案7】:

我正在使用 Angular,并且我使用 webpack 服务器作为开发依赖项。我一直在寻找答案,但找不到适合我的答案。

注意:这只是一种解决方法,不能解决实际问题

打开以下文件

YOUR_PROJECT_ROOT\node_modules\webpack-dev-server\client\index.js

onSocketMsg 方法中,在 function ok() 注释下 reloadApp() 行。

这可以防止应用不断地重新加载。即使您进行了更改,这也会阻止应用程序重新加载。但是您始终可以手动重新加载浏览器,您的更改会反映出来。

【讨论】:

【参考方案8】:

这将通过启用错误覆盖来解决,

overlay:truedevServer 对象中再包含一个属性

devServer: 
    overlay: true,
    contentBase: "./public",
    hot: true,    
    inline: true,
    quiet: false,
    noInfo: true,
    stats:  colors: true 

更改 webpack.config.js 后

var webpack = require("webpack");
var path = require("path");


module.exports = 

    devtool: "inline-source-map",
    entry: [
        "webpack-dev-server/client?http://127.0.0.0/",
        "webpack/hot/only-dev-server",
        "./src"
    ],
    devServer: 
        overlay: true,
        contentBase: "./public",
        hot: true,    
        inline: true,
        quiet: false,
        noInfo: true,
        stats:  colors: true 
    ,
    output: 
        path: path.join(__dirname, "./public"),
        filename: "./assets/js/bundle.js"
    ,
    resolve: 
        modulesDirectrories: ["node_modules", "src"],
        extentions: ["", ".js"]
    ,
    module : 
        loaders: [
             
                test: /\.jsx?$/,
                exclude: "/node_modules/",
                loaders: ["react-hot-loader", "babel?presets[]=react,presets[]=es2015"] 
            , 
            
                test: /\.css$/,
                loader: "style-loader!css-loader"
            , 
            
                test: /\.gif$/,
                loader: "url-loader?mimetype=image/png"
            , 
            
                test: /\.woff(2)?(\?v=[0-9].[0-9].[0-9])?$/,
                loader: "url-loader?mimetype=application/font-woff"
            , 
            
                test: /\.(ttf|eot|svg)(\?v=[0-9].[0-9].[0-9])?$/,
                loader: "file-loader?name=[name].[ext]"
            
        ]
    ,
    plugins: [ 
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NoErrorsPlugin(),
        new webpack.DefinePlugin(
            "process.env": 
                NODE_ENV: JSON.stringify("development")
            
        )
    ]


【讨论】:

【参考方案9】:

我是这样解决的:

  devServer: 
    host: '0.0.0.0',
    https: false,
    port: 8080,
    public: 'http://0.0.0.0:8080'
  ,  

【讨论】:

【参考方案10】:

在 webpack 配置文件中:修改 devServer 并添加:

 
  disableHostCheck: true,
  transportMode: 'ws',
  injectClient: false
 

如下所示,它应该可以工作:

devServer: 
  contentBase: "./public",
  hot: true,    
  inline: true,
  quiet: false,
  noInfo: true,
  stats:  colors: true 
  disableHostCheck: true,
  transportMode: 'ws',
  injectClient: false

它对我有用。

【讨论】:

【参考方案11】:

你不需要改变webpack.config.js

尝试修复package.json(在端口 3000 上启动 server 而不是 standard 8080):

"start": "./node_modules/.bin/webpack-dev-server --host localhost --port 3000 --content-base src --inline --hot",

【讨论】:

这对我不起作用。你能解释一下为什么它会有所作为吗?【参考方案12】:

index.htm更改路径:

   <link rel="stylesheet" href="./main.css">
   <script src="./main.js"></script>

   <link rel="stylesheet" href="/main.css">
   <script src="/main.js"></script> 

【讨论】:

此答案被否决,因为它仅适用于您和您当前的设置。它没有解释 WDS 断开连接问题或如何修复它。

以上是关于继续让 [WDS] 断开连接!错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在SSH断开后让远程服务器程序继续运行

Linux下SSH远程连接断开后让程序继续运行解决办法

unity客户端自动断开连接

ssh连接断开后 shell进程退出

客户端断开连接后进程是不是仍继续

处理中途断开连接的控制器的最佳做法是啥?