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 を使用する際に基本的な互換性の問題が発生しないことを願っています。
よろしくお願いします。
------------------------
問題 #751 に該当すると思います
この問題は、core-js 3.6.0 以降、2 つの異なるバージョンのポリフィルが読み込まれるときに発生します。現在、問題はまだ解決されていませんペンなので、現時点での解決策は、2 つのバージョンが読み込まれないようにするか、<3.6.0 にダウングレードすることになります。
以下は、依存関係ツリー内の core-js のさまざまなバージョンを識別するのに役立ちます。
npm list | grep core-js
1
1
core-js の依存関係の npm リストに 3.65 と 3.64 core-js が同時に存在すると、確かに問題があります。これにより問題の原因が特定され、Yu Zhou のコメントは問題を一時的に回避する手段を提供します。許可していただきありがとうございますcore-js のこの問題のバグについては知っています。
– 目のない気まぐれ
2020 年 9 月 4 日 12:50
------------------------
私はマイケルの意見に賛成です。この問題は、y フラグのサポートにより、バージョン 3.6.0 で発生します。 Michael の解決策のほかに、次の回避策も参照できます。
polyfills.ts 内の次の行を置き換えることができます。
import 'core-js';
へ
import 'core-js/stable/array';
import 'core-js/stable/date';
import 'core-js/stable/function';
import 'core-js/stable/map';
import 'core-js/stable/math';
import 'core-js/stable/number';
import 'core-js/stable/object';
import 'core-js/stable/parse-float';
import 'core-js/stable/parse-int';
// import 'core-js/stable/regexp';
import 'core-js/stable/set';
// import 'core-js/stable/string';
import 'core-js/stable/symbol';
import 'core-js/stable/weak-map';
インポートの正規表現と文字列がコメント化されていることに注意してください。したがって、アプリケーションが分割を行う必要がある場合、アプリケーションは、ブラウザの Split 関数ではなく、ブラウザのネイティブ関数を使用します。コア-js。
1
100 万の感謝 - core-js 3.6.5 以降に適切なパッチが実装されるまでの素晴らしいヒント
– 目のない気まぐれ
2020 年 9 月 4 日 12:52