Einige Benutzer melden gelegentlich JS-Fehler auf meiner Website. Die Fehlermeldung lautet "Erwartete Kennung, Zeichenfolge oder Nummer" und die Zeilennummer lautet 423725915. Dies ist nur eine beliebige Nummer und ändert sich in jedem Fall, wenn dies auftritt. Dies geschieht hauptsächlich mit IE7 / Mozilla 4.0-Browsern.
Ich habe meinen Code ein paar Mal gescannt und jslint ausgeführt, aber es hat nichts gefunden - kennt jemand die allgemeine Art von JS-Problemen, die zu dieser Fehlermeldung führen?
javascript
Psychotik
quelle
quelle
Antworten:
Die Ursache für diesen Fehlertyp kann häufig ein falsch platziertes Komma in einer Objekt- oder Array-Definition sein:
Wenn es in einer zufälligen Zeile angezeigt wird, ist es möglicherweise Teil einer Objektdefinition, die Sie dynamisch erstellen.
quelle
,\s*?\n?\s*?]
,\s*?\n?\s*?\}
Die Verwendung des Wortes Klasse als Schlüssel in einem Wörterbuch Javascript können auch die gefürchtete „Erwartete Bezeichner, Zeichenfolge oder Zahl“ Fehler auslösen , da Klasse ein reserviertes Schlüsselwort in Internet Explorer ist.
SCHLECHT
GUT
Wenn Sie ein reserviertes Schlüsselwort als Schlüssel in einem Javascript-Wörterbuch verwenden, schließen Sie den Schlüssel in Anführungszeichen ein.
Hoffe, dieser Hinweis erspart Ihnen einen Tag des Debuggens der Hölle.
quelle
Eigentlich habe ich so etwas kürzlich im IE bekommen und es hing mit der JavaScript-Syntax "Fehler" zusammen. Ich sage Fehler in Anführungszeichen, weil es überall außer im IE in Ordnung war. Dies war unter IE6. Das Problem hing mit der Erstellung von JSON-Objekten und einem zusätzlichen Komma zusammen, z
IE6 mag dieses Komma nach 3 wirklich nicht. Vielleicht suchen Sie nach so etwas, heiklen kleinen Problemen mit der Syntaxformalität.
Ja, ich fand die Anzahl von mehreren Millionen Zeilen in meinem JavaScript mit 25 Zeilen ebenfalls interessant.
Viel Glück.
quelle
Dies ist eine endgültige Nichtantwort: Eliminieren Sie eine verlockende, aber falsche Antwort, um anderen zu helfen, zu richtigen Antworten zu navigieren.
Es könnte so aussehen, als würde das Debuggen das Problem hervorheben. Der einzige Browser, in dem das Problem auftritt, ist der IE. Im IE können Sie nur Code debuggen, der Teil des Originaldokuments war. Bei dynamisch hinzugefügtem Code zeigt der Debugger nur das body-Element als aktuelle Anweisung an, und der IE behauptet, der Fehler sei in einer großen Zeilennummer aufgetreten.
Hier ist eine Beispielwebseite, die dieses Problem im IE demonstriert:
Dies ergab für mich den folgenden Fehler:
quelle
<script>
Tag in das Dokument selbst ein , entweder lokal oder als geladene Ressource. Debuggen. Wechseln Sie zurück zu Ihrem Arbeitsskript.Ich habe gerade den Fehler in einer meiner Anwendungen als Sammelbegriff gesehen. Denken Sie daran, den Namen aller Javascript-Eigenschaften anzugeben, die mit dem Schlüsselwort identisch sind.
Diesen Fehler gefunden, nachdem ein Fehler behoben wurde, bei dem ein Objekt wie:
erzeugte den Fehler (Klasse und Funktion sind Schlüsselwörter), der durch Hinzufügen von Anführungszeichen behoben wurde
Ich hoffe, Ihnen etwas Zeit zu sparen
quelle
if(_features.delete){...}
einen Fehler, da delete ein Schlüsselwort ist. stackoverflow.com/questions/26255/…http://closure-compiler.appspot.com/home erkennt diesen Fehler mit einem genauen Verweis auf die tatsächliche Zeilennummer im fehlerhaften Skript.
quelle
Wie bereits erwähnt, hat ein zusätzliches Komma einen Fehler ausgelöst.
Auch in IE 7.0 verursachte das Fehlen eines Semikolons am Zeilenende einen Fehler. Es funktioniert gut in Safari und Chrome (ohne Fehler in der Konsole).
quelle
IE7 ist viel weniger verzeihend als neuere Browser, insbesondere Chrome. Ich benutze gerne JSLint , um diese Fehler zu finden. Es werden unter anderem diese falsch platzierten Kommas gefunden. Möglicherweise möchten Sie die Option aktivieren, um falsche Leerzeichen zu ignorieren.
Zusätzlich zu falsch platzierten Kommas berichtete in diesem Blog in den Kommentaren jemand:
quelle
Entfernen Sie die unerwünschten, melden Sie sich in der Funktion. Sie erhalten die Lösung.
Verweisen Sie darauf
http://blog.favrik.com/2007/11/29/ie7-error-expected-identifier-string-or-number/
quelle
Dieser Fehler tritt auf, wenn wir ein Komma am Ende des Arrays oder im Funktionscode hinzufügen oder verpassen. Es ist notwendig, den gesamten Code einer Webseite für einen solchen Fehler zu beobachten.
Ich habe es in einem Facebook-App-Code erhalten, als ich für eine Facebook-API codiert habe.
quelle
Das klingt für mich wie ein Skript, das mit src eingezogen und nur zur Hälfte geladen wurde, was zu einem Syntaxfehler führt, da der Rest nicht geladen wird.
quelle
IE7 hat Probleme mit Arrays von Objekten
quelle
Eine weitere Variante dieses Fehlers: Ich hatte eine Funktion namens 'continue' und da es sich um ein reserviertes Wort handelt, wurde dieser Fehler ausgelöst. Ich musste meine Funktion 'continueClick' umbenennen.
quelle
Vielleicht haben Sie ein Objekt mit einer Methode 'Konstruktor' und versuchen, diese aufzurufen.
quelle
Möglicherweise tritt dieses Problem bei der Verwendung von Knockout JS auf. Wenn Sie versuchen, das Klassenattribut wie im folgenden Beispiel festzulegen, schlägt dies fehl:
Entfliehen Sie der Klassenzeichenfolge wie folgt:
Meine 2 Cent.
quelle
Auch ich war auf dieses Problem gestoßen. Ich habe unten zwei Lösungen gefunden. 1). Entfernen Sie, wie oben von anderen erwähnt, zusätzliches Komma aus dem JSON-Objekt. 2). Auch meine JSP / HTML hatte. Aus diesem Grund wurde der alte Browser-Modus ausgelöst, der einen JS-Fehler für zusätzliches Komma verursachte. Bei Verwendung wird der HTML5-Modus des Browsers ausgelöst (falls unterstützt) und es funktioniert auch mit Extra Comma wie bei allen anderen Browsern FF, Chrome usw.
quelle
Hier ist eine einfache Technik zum Debuggen des Problems: Geben Sie das Skript / den Code an die Konsole zurück. Kopieren Sie den Code von der Konsole in Ihre IDE. Die meisten IDEs führen eine Fehlerprüfung des Codes durch und markieren Fehler. Sie sollten den Fehler fast sofort in Ihrem JavaScript / HTML-Editor sehen können.
quelle
Hatte das gleiche Problem mit einer anderen Konfiguration. Dies war in einer eckigen Fabrikdefinition, aber ich gehe davon aus, dass es auch anderswo passieren könnte:
Fix ist sehr exotisch:
quelle
Dies kann auch in Typescript passieren, wenn Sie eine Funktion mitten im Nirgendwo innerhalb einer Klasse aufrufen. Beispielsweise
Funktionsaufrufe
console.log()
müssen wie innerhalb von Funktionen sein. Nicht in dem Bereich, in dem Sie Klassenfelder deklarieren sollten.quelle
Typescript für Windows-Problem
Dies funktioniert in IE, Chrome, FF
Dies funktioniert in Chrome, FF, funktioniert nicht in IE 11
Ich denke, es hat irgendwie mit Windows reservierten Wörtern zu tun
quelle
Ich bin auf diesen Fehler gestoßen, bei dem anstelle eines nachgestellten Kommas oder dergleichen diese Syntax in einer constants.js verwendet wurde
IE 11 gefiel das überhaupt nicht.
Wie bereits erwähnt, konnte dies jedoch leicht mithilfe von behoben werden
quelle