socket.io-客户端在 ie 11 上导致语法错误 - Next js

socket.io-client causing a syntax error on ie 11 - Next js

我将我的 CRA 项目迁移到 Next js,我仍然使用我的 CRA 应用程序,只是安装了 next js 并做了一些更改。现在我的 CRA 应用程序在 IE 11 中运行良好,我正在使用套接字 io 来实现我的聊天功能。但是当我将我的CRA迁移到Next js时,在IE中出现这个错误。

SCRIPT1002: Syntax error
_app.js (24050,23)

这是我点击错误时显示的内容

/***/ "./node_modules/debug/src/browser.js":
/*!*******************************************!*\
  !*** ./node_modules/debug/src/browser.js ***!
  \*******************************************/
/***/ (function(module, exports, __webpack_require__) {

/* provided dependency */ var process = __webpack_require__(/*! process */ 
"./node_modules/process/browser.js");
/* eslint-env browser */

/**
 * This is the web browser implementation of `debug()`.
 */

exports.formatArgs = formatArgs;
exports.save = save;
exports.load = load;
exports.useColors = useColors;
exports.storage = localstorage();
exports.destroy = (() => {
    let warned = false;

    return () => {
        if (!warned) {
            warned = true;
            console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
        }
    };
})();

我做了很多研究,现在我坚持了 3 天。我尝试使用 next-transpile-modules 转译 'debug' 依赖项,但随后它显示另一个错误,在不同的依赖项上,我尝试再次转译该“依赖项”,然后再次转译另一个,直到出现循环的错误。似乎 socket io 客户端正在使用的所有依赖项都没有被转换。我想知道为什么我的 CRA 应用程序在 IE 11 中运行良好,而我的 CRA/Next JS 却不行。我认为错误是由 socket io client 引起的,导致每次我添加包含 socket io-client 的 page/component 时,错误发生,当我删除它时,错误消失了。请帮忙解决这个问题,我需要转译整个 node_modules 还是什么?请大家帮忙谢谢!

我可以在使用最新版本 socket.io-client 时重现该问题。这是一个与 socket.io-client 中的 debug 依赖相关的已知问题。更详细的信息可以参考this issue on GitHub, this thread and .

如果您想支持 IE 11,可以将 socket.io-client 降级到 2.3.1 版本。此版本的 socket.io-client 使用 debug 依赖项 ~3.1.0,不会在 IE 11 中中断。您可以删除 node_modules 中的 socket.io-client 文件夹,然后 运行 npm i socket.io-client@2.3.1 安装2.3.1版本。我已经测试过了,它可以在 IE 11 中正常运行。