我使用externals
选项将xmlhttprequest
模块指定为外部模块。这在版本2.2.1
中运行良好。我指定外部如下:
externals: {
"xmlhttprequest": "XMLHttpRequest"
}
在.js
文件中,我有以下代码:
if (typeof window === 'undefined') {
// Seems like we are using Node.js
var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
}
完美无缺。
我决定切换到最新版本(3.3.0
),现在我的项目在浏览器上使用时出错:XMLHttpRequest is not a constructor
。因此,出于某种原因,它似乎会覆盖全局XMLHttpRequest
变量。
这很奇怪,因为如果我在控制台中调用new XMLHttpRequest()
,它可以正常工作。
使用Node.js时,全局变量XMLHttpRequest
应由外部模块替换。在浏览器中,全局变量应保持不受影响。
当我删除该行
var XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
它在浏览器中再次正常工作。当我重命名变量时。但是,当我将外部更改为类似的东西时(并保持上面的行不受影响):
xmlhttprequest: 'abcd'
它仍然失败。
查看我的存储库here。如果您将变量名称NodeXMLHttprequest
替换为XMLHttpRequest
,然后使用webpack进行编译,那么它将不再适用于浏览器。