有一个特别涉及Next.js数组的问题-平面填充。我需要兼容旧版本的Chrome,在这种情况下(V60-68)。我正在开发的应用程序使用了一个使用jQuery 3.4构建的视频播放器包。该程序包使用$selector).replaceWith(elem)
,并且是发生错误的地方。
$.replaceWith最终运行:
var flat = arr.flat ? function(array) {
return arr.flat.call(array);
} : function(array) {
return arr.concat.apply([], array);
}
问题是,由于Next.js多边形填充,不兼容的浏览器将运行arr.flat.call(array)
,并且将在polyfill-module.js
中使用未定义的引用失败。当进入node_modules/@next/polyfill-module/src/index.js
时,移除数组-平坦的多边形填充,并重建;应用程序将按预期工作,并如jQuery预期的那样运行arr.concant.apply([], array);
。
因此,我正处于如何处理这种情况的十字路口。理想情况下,我希望保持对Next的多填充的一些支持,并且从jQuery迁移是不可能的。有没有办法让两者共存?例如,Next是否提供了一种方法来禁止在特定页面/示例上加载polyfill-module.js
文件?或者,是否有任何建议允许jQuery在这种特定情况下按预期运行?
1条答案
按热度按时间ql3eal8s1#
我为这个问题提出的解决方案是在旧浏览器上删除
array.flat
的Next.js默认多边形填充,因为它与jQUery.replaceWith()
冲突。我使用的应用程序使用rooks library和react-device-detect。