2016-08-18 4 views
4

ich die folgende Fehlermeldung erhalten:Unexpected token ‚>‘ Mit Array.some() Mit Karma und PhantomJS

PhantomJS 2.1.1 (Windows 7 0.0.0) ERROR 
    SyntaxError: Unexpected token '>' 
    at myAngularControllerPath.js:9 

zu dieser Datei navigieren finde ich, dass ich die Array.some() Funktion bin mit wie so:

return list.some(x => isListItemGood(x)); 

Wenn ich Karma mit Chrome angegeben in der karma.conf.js Datei ausführen bekomme ich diesen Fehler nicht.

Gemäß http://kangax.github.io/compat-table/es5/ unterstützt PhantomJS alle 10 neuen Array-Funktionen von ES5 und Array.some() wurde in ES5 gemäß https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some eingeführt. Ich habe PhantomJS mit 'npm install --save-dev karma-phantomjs-launcher' installiert, das in seinen Abhängigkeiten 2.1.7 als PhantomJS-Version aufgelistet hat.

Vielen Dank für jede Hilfe!

+2

Ich denke, das Problem ist der Lambda-Ausdruck. Das => wird wahrscheinlich nicht unterstützt. –

+0

Hey Stefan, danke, dass du dir das angeschaut hast. Am Ende der Frage gab ich Referenzen, die sagen, dass alle Versionen, die ich verwende, das Lambda unterstützen sollten. Denken Sie, dass diese Referenzen nicht korrekt sind? – IfTrue

+0

Vielleicht. Es war meine erste Vermutung, als ich las, dass es in Chrom richtig funktioniert. Hast du es stattdessen mit einer normalen Funktion versucht? Funktioniert es dann? –

Antwort

11

"Arrow functions" are not supported by PhantomJS 2.x

PhantomJS unterstützt nur eine kleine Untergruppe von ES6.

+0

Hi Artjom, die Sie mit einer ES6-Kompatibilitätstabelle verknüpft haben, stellte ich eine Referenz bereit, die zeigt, dass .some() in ES5 eingeführt wurde. Nur um klarzustellen, sagst du, dass Pfeilfunktionen (lambdas) in ES6 eingeführt wurden? Ich denke, dass das der Fall sein kann, da ich sehe, dass es hier auch in 6 eingeführt wird: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions. – IfTrue

+2

Das ist genau das, was ich sage. Das Problem ist überhaupt nicht "Array.prototype.some", denn wenn es so wäre, wäre das ein TypeError und kein SyntaxError. –

+0

Danke für Ihre Hilfe Mann - Sie scheinen zu 100% richtig zu sein. – IfTrue