2012-06-07 10 views
6

Sto usando jshint per convalidare i miei file JavaScript.Sopprimi `Si aspettava un identificatore e invece vedeva 'default' (una parola riservata)` in JSLint con Mongoose

Sul lato server sto usando node.js con Mongoose. In Mongoose Sono incoraggiato a scrivere schemi in un modo simile:

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

Durante l'esecuzione di rilascio di fibre, ottengo l'errore:

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

C'è un modo per sopprimere questo errore? Ho veramente preferirei che il comportamento invece di scrivere:

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

Tecnicamente parlando, cioè JS non validi, anche se la maggior parte degli ambienti sembrano permetterlo. Non sono sicuro che ci sia comunque un'opzione di configurazione in JSHint. –

+0

Ho davvero capito il punto. Perché Mongoose ci suggerisce di scrivere JS non valido? :/ – jsalonen

+1

Basta metterlo tra virgolette e andare avanti. Anch'io mi ha infastidito all'inizio, ma ora mi sento come una droga anche solo per passare il tempo a pensarci. – JohnnyHK

risposta

4

È inoltre possibile utilizzare l'opzione "es5" per disattivare questo evento.

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

+0

Funziona anche per "Previsto un identificatore e invece ha visto 'finalmente' (una parola riservata)." che è un problema quando si utilizza l'API Promise di AngularJS. – Alex

+1

Se vedi ancora questo errore, devi aggiornare la tua versione di JSHint. A partire dalla 2.0.0 l'opzione 'es5' è stata abilitata di default ma sto ancora vedendo un sacco di rinvii all'articolo collegato da questa risposta. –

5

default è davvero una parola riservata in JavaScript (https://developer.mozilla.org/en/JavaScript/Reference/Reserved_Words). Mentre tecnicamente puoi usare il default in un nome di proprietà dell'oggetto senza problemi, potresti avere problemi con quella notazione se il tuo interprete è severo (come il lint).

Il modo più semplice per andare avanti: risolvere il problema aggiungendo virgolette. Lint non ti piagnucolerà più. Il codice è più lungo di due caratteri, ma quindi cosa - passa il linting e si è certi di non avere problemi a causa dell'uso di una parola chiave riservata.