2012-06-07 9 views
6

Ich verwende jshint, um meine JavaScript-Dateien zu validieren.Unterdrückt `Erwartete einen Bezeichner und sah stattdessen 'default' (ein reserviertes Wort)` in JSLint mit Mungo

Auf der Serverseite benutze ich node.js mit Mongoose. In Mongoose bin ich ermutigt Schemen in einer Art und Weise zu schreiben wie:

var UserSchema = new mongoose.Schema({ 
    firstname : { type: String, default: '' } 
}); 

Wenn Fusseln läuft, ich Fehler:

Expected an identifier and instead saw 'default' (a reserved word). 

Gibt es eine Möglichkeit, diesen Fehler zu unterdrücken? Ich würde wirklich dieses Verhalten statt zu schreiben bevorzugen:

var UserSchema = new mongoose.Schema({ 
    firstname : { type: String, "default": '' } 
}); 
+1

Technisch gesehen, das ist ungültig JS, obwohl die meisten Umgebungen scheinen es zu ermöglichen. Ich bin mir nicht sicher, ob es eine Konfigurationsoption in JSHint gibt. –

+0

Ich verstehe das wirklich. Warum schlägt uns Mongoose vor, ungültige JS zu schreiben? :/ – jsalonen

+1

Einfach in Anführungszeichen setzen und weitergehen. Es nervte mich auch zuerst, aber jetzt fühle ich mich wie ein Dope, der Zeit damit verbringt, darüber nachzudenken. – JohnnyHK

Antwort

4

Sie können auch die Option "es5" verwenden, um dies zu verhindern.

See: http://jslinterrors.com/expected-an-identifier-and-instead-saw-a-a-reserved-word/

+0

Funktioniert auch für "Erwartete eine Kennung und stattdessen sah 'endlich' (ein reserviertes Wort)." Dies ist ein Problem bei der Verwendung der AngularJS Promise API. – Alex

+1

Wenn dieser Fehler immer noch auftritt, sollten Sie Ihre Version von JSHint aktualisieren. Seit 2.0.0 ist die 'es5' Option standardmäßig aktiviert, aber ich sehe immer noch viele Verweise auf den verknüpften Artikel aus dieser Antwort. –

5

default ist in der Tat ein reserviertes Wort in JavaScript (https://developer.mozilla.org/en/JavaScript/Reference/Reserved_Words). Während Sie technisch den Standardwert in einem Objekteigenschaftsnamen ohne Probleme verwenden können, könnten Sie Probleme mit dieser Notation bekommen, wenn Ihr Interpreter streng ist (wie Lint ist).

Der einfachste Weg, um vorwärts zu gehen: Beheben Sie das Problem durch Anführungszeichen. Lint wird dich nicht mehr winseln. Der Code ist zwei Zeichen länger, aber was - linning vergeht und Sie haben garantiert keine Probleme aufgrund der Verwendung eines reservierten Schlüsselwortes.