2012-07-10 13 views
9

Uso Expresstop di Node.js per creare API RESTful e utilizzo di grunt per guardare i miei file e filtrare automaticamente il mio JavaScript.Utilizzo di JSHint con Express.js/'delete' (una parola riservata)

Ogni volta che uso la funzione di eliminazione, ma viene segnalato da JSHint:

[L218:C9] Expected an identifier and instead saw 'delete' (a reserved word). 
app.delete('/api/users/:userid', function deleteUser(req, res, next) { 

capisco che 'Elimina' è una parola riservata, ma è scelto da Express.js! C'è un modo migliore per fare sfogo alla mia app Express.js? Un modo per disattivare questo controllo ??

+0

Fare una ricerca rapida Credo che si possa usare l'opzione 'es5' per quello. – Alfred

risposta

28

In Express.js, utilizzare del anziché delete.

app.del('/api/users/:userid', function deleteUser(req, res, next) 
+0

Fantastico! Grazie! :-D –

+5

Stranamente, questo non è nella documentazione dell'API ... – prauchfuss

+1

NON UTILIZZARE più! esprec deprecato app.del: utilizzare app.delete invece –

3

In JSHint 1.1.x è possibile impostare l'opzione per es5 jshint, e vi permetterà di usare le parole riservate come proprietà per la specifica ES5.

A partire da JSHint 2.0 es5 l'opzione è l'impostazione predefinita e dovrebbe essere consentito utilizzare le parole riservate come proprietà.

Per ulteriori informazioni a http://www.jshint.com/docs/#options

+2

Questo è cambiato; [dalla versione 2.0.0] (http://www.jshint.com/blog/2013-05-07/2-0-0/), JSHint ha eliminato l'opzione 'es5' e ora assume che il codice sia ES5 a meno che non sia detto diversamente tramite le nuove opzioni 'es3' e' esnext'. –

6

è possibile dirigersi Un altro modo per risolvere questo sarebbe stata quella di utilizzare bracket notation invece di dot notation.

app['delete']('/api/users/:userid', function deleteUser(req, res, next) { 
    /* function body */ 
}); 

Questo tipo di lavoro intorno era necessario in passato quando si lavora con IndexedDB che definisce sia .delete e .continue metodi.

In questi giorni questo tipo di soluzione alternativa non dovrebbe essere necessario. Ever since ES5 JavaScript ha consentito ai nomi delle proprietà di utilizzare parole riservate. Per un lungo periodo di tempo jsHint si è assunto il presupposto che il proprio codice fosse ES3, ma starting with version 2.0.0 per impostazione predefinita si presuppone che sia ES5 e non si lamenterà delle parole riservate utilizzate come nomi di proprietà.

Problemi correlati