角度polyfill问题:IE11-core-js v3.6.5方法es.string.split.js在拆分时无法解析正则表达式/ ^ | \ s + /

问题描述

Angular 10 ,d3 5.16.0 ,core-js 3.6.5

长话短说是d3-drag调用d3-dispatch,后者在内部调用了一个名为.parseTypenames的方法。

function parseTypenames(typenames,types) {
    return typenames.trim().split(/^|\s+/).map(function (t) {
    var name = "",i = t.indexOf(".");
    if (i >= 0) name = t.slice(i + 1),t = t.slice(0,i);
    if (t && !types.hasOwnProperty(t)) throw new Error("unknown type: " + t);
    return {
      type: t,name: name
    };
  });
}

es.string.split.js正在对/ ^ | \ s + /正则表达式进行愚蠢的处理。

var foo = 'drag'.split(/^|\s+/) // yields an array = ['d','r','a','g'] when i'm expecting ['drag']

关于在这里做什么的任何建议?希望我在使用IE11,Angular 10和D3时没有基本的兼容性问题。

谢谢。

解决方法

我认为您正在击中issue #751

这是从core-js 3.6.0开始的,当两个不同版本的polyfill被加载时。当前问题仍然存在,因此目前的解决方案是确保没有加载两个版本,或者降级到

以下内容可能有助于在依赖项树中标识 core-js 的不同版本:

npm list | grep core-js
,

我赞成迈克尔的意见。由于支持SELECT R.Test*5 FROM ( SELECT CASE WHEN (T.Delivery_Option = 'International Standard') AND (T.[Net_Qty] * T.[Unit_Charge]) < 50 THEN 4.99 WHEN (T.Delivery_Option = 'International Standard') AND (T.[Net_Qty] * T.[Unit_Charge]) >= 50 THEN 0 ELSE 0 END AS 'Test' FROM TBL T ) as R 标志,版本3.6.0引入了该问题。除了迈克尔的解决方案,您还可以参考以下解决方法:

您可以在 polyfills.ts 中替换以下行:

y

import 'core-js';

请注意,对导入的regexp和字符串进行了注释。因此,当您的应用程序需要进行拆分时,它使用的是浏览器的本机功能,而不是core-js中的split功能。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...