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
Webpack的WebSocket垫片错误_Websocket_Webpack - Fatal编程技术网

Webpack的WebSocket垫片错误

Webpack的WebSocket垫片错误,websocket,webpack,Websocket,Webpack,在webpack项目上创建WebSocket对象时遇到问题。当我调用newwebsocket(“”)时,它看起来好像我得到了构造函数,而不是该构造函数的新对象。我有一个简单的网页,不使用网页包,在那里一切都很好。使用Chrome调试器逐步执行工作版本如下所示: 我无法进入WebSocket构造函数,它只是跳到下一行。现在,在我的网页包应用程序中,它确实进入了构造器,我看到了以下内容: 当我走出来时,我看到: 我真的不确定我做错了什么,我怎么才能解决这个问题?该应用程序不是由webpack服

在webpack项目上创建WebSocket对象时遇到问题。当我调用
newwebsocket(“”)
时,它看起来好像我得到了构造函数,而不是该构造函数的新对象。我有一个简单的网页,不使用网页包,在那里一切都很好。使用Chrome调试器逐步执行工作版本如下所示:

我无法进入
WebSocket
构造函数,它只是跳到下一行。现在,在我的网页包应用程序中,它确实进入了构造器,我看到了以下内容:

当我走出来时,我看到:

我真的不确定我做错了什么,我怎么才能解决这个问题?该应用程序不是由webpack服务器托管的,我只是使用webpack进行打包。所有这些都是在OSX上的Chrome上实现的;下面是我的webpack.config.js

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

module.exports = {
  devtool: 'eval',
  entry: [
//    'webpack-dev-server/client?http://localhost:3000',
//    'webpack/hot/only-dev-server',
    './src/turborabbit'
  ],
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'bundle.js',
    publicPath: '/static/'
  },
  plugins: [
    new webpack.HotModuleReplacementPlugin()
  ],
  module: {
    loaders: [{
      test: /\.js$/,
      loaders: ['react-hot', 'babel'],
      include: path.join(__dirname, 'src')
    }]
  }
};
编辑:

我正在导入且遇到问题的模块是
rserve
。我有一个变通办法,这是我做过的最丑陋的事情。该模块仅在有问题的文件中使用下划线和websocket;我已经使用
imports loader
覆盖了对模块的require调用,并通过
ProvidePlugin
插入了下划线。这是网页包配置的相关部分:

plugins: [
  new webpack.HotModuleReplacementPlugin(),
  new webpack.ProvidePlugin({
    '_': 'underscore'
  })
],
module: {
  loaders: [{
    test: /\.js$/,
    loaders: ['imports', 'react-hot', 'babel'],
    include: path.join(__dirname, 'src')
  }]
}
我按照如下方式加载模块:

var Rserve = require ('imports?require=>(function(x){return(x==="ws"?global.WebSocket:_);})!rserve');

我真诚地希望有更好的方法

我已经找到了一个更好的解决方案,在webpack中别名
ws
,并制作一个垫片,只返回
WebSocket
。webpack.config的相关部分:

resolve: {
  alias: {
    ws: path.resolve ('./') + '/src/shim/ws.js'
  }
}
在src/shim/ws.js中:

module.exports = WebSocket || MozWebSocket;