2012-07-10 8 views
9

Używam Express.js ontop z Node.js do tworzenia RESTful API, i za pomocą gruntu do oglądania moich plików i automatycznie lint mój JavaScript.Używanie JSHint z Express.js/'delete' (słowo zastrzeżone)

każdym razem korzystać z funkcji usuwania, zostanie ona oznaczona przez JSHint:

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

Rozumiem, że „Usuń” jest słowem zarezerwowanym, ale to wybrana przez Express.js! Czy istnieje lepszy sposób na linting mojej aplikacji Express.js? Jakikolwiek sposób wyłączyć tę kontrolę?

+0

Szybkie wyszukiwanie Uważam, że można użyć do tego opcji "es5". – Alfred

Odpowiedz

28

W Express.js użyj del zamiast delete.

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

Awesome! Dzięki! :-D –

+5

O dziwo, nie ma tego w dokumentacji API ... – prauchfuss

+1

NIE UŻYWAJ już del! ekspresowe przestarzałe app.del: użyj app.delete zamiast –

3

W JSHint 1.1.x można ustawić opcję es5 dla jshint i pozwoli na użycie słów zastrzeżonych jako właściwości zgodnie ze specyfikacją ES5.

Od JSHint 2.0 es5 opcja jest domyślna i powinieneś mieć możliwość używania słów zastrzeżonych jako właściwości.

Więcej informacji można udać się do http://www.jshint.com/docs/#options

+2

To się zmieniło; [od wersji 2.0.0] (http://www.jshint.com/blog/2013-05-07/2-0-0/), JSHint pozbył się opcji 'es5' i teraz zakłada kod ES5 o ile nie podano inaczej za pośrednictwem nowych opcji 'es3' i' esnext'. –

6

Innym sposobem rozwiązania tego byłoby użyć bracket notation zamiast dot notation.

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

Ten rodzaj pracy wokół było konieczne w przeszłości podczas pracy z IndexedDB która określa zarówno .delete i .continue metod.

W dzisiejszych czasach tego rodzaju obejście nie powinno być konieczne. Ever since ES5 JavaScript zezwala na stosowanie nazw właściwości do zarezerwowania słów. Przez długi czas jsHint domyślnie przyjmował, że twój kod to ES3, ale starting with version 2.0.0 domyślnie zakłada, że ​​jest to ES5 i nie będzie narzekał na słowa zastrzeżone używane jako nazwy właściwości.

Powiązane problemy