【问题标题】:socket.io-client causing a syntax error on ie 11 - Next jssocket.io-client 在 ie 11 上导致语法错误 - Next js
【发布时间】:2021-10-25 05:04:02
【问题描述】:

我将我的 CRA 项目迁移到 Next js,我仍然使用我的 CRA 应用程序,只是安装了 next js 并进行了一些更改。现在我的 CRA 应用程序在 IE 11 中运行良好,我正在使用 socket 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 转换“调试”依赖项,但随后它显示另一个错误,在不同的依赖项上,我尝试再次转换该“依赖项”,然后再次转换另一个,直到出现错误循环.似乎套接字 io 客户端正在使用的所有依赖项都没有被转译。我想知道为什么我的 CRA 应用程序在 IE 11 中运行良好,而我的 CRA/Next JS 却不行。我认为该错误是由套接字 io 客户端引起的,导致每次我添加包含套接字 io-client 的页面/组件时,都会发生错误,当我删除它时,错误就消失了。请帮助如何解决这个问题,我需要转换整个 node_modules 还是什么?请帮忙谢谢!

【问题讨论】:

    标签: reactjs internet-explorer next.js node-modules create-react-app


    【解决方案1】:

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

    如果您想支持 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 中正常运行。

    【讨论】:

    • 我降级到 2.3.1,但它对我不起作用,我只是得到一个无限循环的错误。它说对象不支持方法 attachshadow 等。我猜 IE 也不支持这些代码。我想知道为什么在 CRA 上,最新的 socket.io-client 可以工作,但不能在 nextjs 上工作?
    • 我使用新的creat-next-app 应用程序进行测试并安装socket.io-client@2.3.1。然后我只在_app.js中添加这一行import io from "socket.io-client"。它在 IE 中没有显示任何错误。你是这样测试的吗?如果您在 nextjs 应用中添加了其他代码,可能会导致其他错误。如果有,请提供a minimal code snippet,它可以重现问题,以便我们进行测试,看看如何提供帮助。对于CRA的情况,我做个测试看看能不能用。
    • 它可以工作,但现在我必须在我的后端安装相同的版本,问题是我收到一个错误,说我的后端没有 socket.io@2.3.1 版本
    • 将我的服务器降级到 v2.3.0,它可以工作。
    猜你喜欢
    • 2021-10-25
    • 2015-07-17
    • 2020-11-24
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 2014-06-12
    • 1970-01-01
    相关资源
    最近更新 更多