Phantomjs: Array.from () مع NodeList يسبب TypeError

تم إنشاؤها على ٢٠ أبريل ٢٠١٦  ·  5تعليقات  ·  مصدر: ariya/phantomjs

1. ما هو إصدار PhantomJS الذي تستخدمه؟

2.1.5

2. ما هي الخطوات التي ستعيد إظهار المشكلة؟

في الكود الذي تم إنشاؤه في Babel ، لدي شيء من هذا القبيل:

Array.from(document.querySelectorAll("*"));

يقوم document.querySelectorAll("*") بإرجاع NodeList . ستفشل PhantomJS مع هذا الرمز.

TypeError: undefined is not a constructor (evaluating 'Array.from(document.querySelectorAll("*"))')

3. ما هو نظام التشغيل الذي تستخدمه؟

ويندوز 7

4. هل استخدمت PhantomJS الثنائية أم أنك جمعتها من المصدر؟

أنا أستخدم الكارما ، التي تحتاج بشدة إلى phantomjs-prebuilt. لذلك أنا لا أستخدم phantomjs مباشرة.

التعليق الأكثر فائدة

Vitallium شكرا على إجابتك!

هذا مضحك للغاية ، لأنه كما قلت سابقًا ، هذا جزء من كود تم إنشاؤه بابل.
عند استخدام

var arr = [...theNodeList];

لتحويل NodeList إلى array ، سيتم إنشاء ما يلي (بما في ذلك Array.from() ) ، حتى عند استخدام الإعداد المسبق es2015:

function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }

var arr = _toConsumableArray(theNodeList);

لقد اتخذت طريقة التحويل هذه من المستندات .

لذلك ، كما ذكرت بالفعل أن Array.from() جزء من ES6 ، فمن المضحك أن Babel يولد كود ES6 لحل ES6. سأفتح قضية لذلك ...

ال 5 كومينتر

آريا

ميزات ES6 غير مدعومة في PhantomJS حتى الآن.

Vitallium شكرا على إجابتك!

هذا مضحك للغاية ، لأنه كما قلت سابقًا ، هذا جزء من كود تم إنشاؤه بابل.
عند استخدام

var arr = [...theNodeList];

لتحويل NodeList إلى array ، سيتم إنشاء ما يلي (بما في ذلك Array.from() ) ، حتى عند استخدام الإعداد المسبق es2015:

function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }

var arr = _toConsumableArray(theNodeList);

لقد اتخذت طريقة التحويل هذه من المستندات .

لذلك ، كما ذكرت بالفعل أن Array.from() جزء من ES6 ، فمن المضحك أن Babel يولد كود ES6 لحل ES6. سأفتح قضية لذلك ...

يمكن تتبعها هنا https://phabricator.babeljs.io/T7305

في هذه الأثناء ، يرجى تتبع دعم ES6 في # 14506. شكرا لك!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات