Javascript 如何配置webpack以与严格模式兼容的方式注入全局对象?
我的目标是将Socket.IO-Client与一些自定义脚本连接起来。问题是,在我的自定义脚本中,严格模式是全局启用的。Socket.IO客户端在严格模式下失败 原因是webpack注入了全局对象。为了演示这个问题,我创建了以下示例脚本app.js:Javascript 如何配置webpack以与严格模式兼容的方式注入全局对象?,javascript,socket.io,webpack,Javascript,Socket.io,Webpack,我的目标是将Socket.IO-Client与一些自定义脚本连接起来。问题是,在我的自定义脚本中,严格模式是全局启用的。Socket.IO客户端在严格模式下失败 原因是webpack注入了全局对象。为了演示这个问题,我创建了以下示例脚本app.js: global.dummy = true; 调用webpack./app.js app.bundle.js将创建一个包含以下行的输出: /* WEBPACK VAR INJECTION */(function(global) {global.dum
global.dummy = true;
调用webpack./app.js app.bundle.js
将创建一个包含以下行的输出:
/* WEBPACK VAR INJECTION */(function(global) {global.dummy = true;
/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
正如您所见,全局对象是使用(function(){returnthis;}())
注入的。这在严格模式下不起作用。(global
未定义且global.dummy
引发异常。)
是否有任何选项可以更改Web包中的此注入行为
当我将注入代码(function(){return this;}())
替换为(function(){return window;}())
时,脚本可以工作。我想在网页包中配置这个
我的尝试:
我创建了一个webpack配置文件,并将target
设置为所有可能的值。没有成功
Socket.IO-client中的网页包配置包含以下内容:
externals: {
global: glob()
},
...
function glob () {
return 'typeof self !== "undefined" ? self : ' +
'typeof window !== "undefined" ? window : ' +
'typeof global !== "undefined" ? global : {}';
}
将其添加到我的网页配置文件中根本不会改变输出。我也有同样的问题。我正在尝试导入一个使用Webpack构建的库,但是由于使用严格,传入的全局函数是
未定义的@MattZeunert。您解决了问题吗?