2012-07-10 17 views
9

Estoy usando Express.js en la parte superior de Node.js para crear la API RESTful, y usar ronco para ver mis archivos y eliminar automáticamente mi JavaScript.Uso de JSHint con Express.js/'eliminar' (una palabra reservada)

Cada vez que utilizo la función de eliminación, que se marca por JSHint:

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

entiendo que 'delete' es una palabra reservada, pero es elegido por Express.js! ¿Hay alguna forma mejor de eliminar mi aplicación Express.js? ¿Alguna forma de desactivar este cheque?

+0

Haciendo una búsqueda rápida Creo que puede usar la opción 'es5' para eso. – Alfred

Respuesta

28

En Express.js, use del en lugar de delete.

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

¡Impresionante! ¡Gracias! :-D –

+5

Extrañamente, esto no está en la documentación de la API ... – prauchfuss

+1

¡NO USE DEL ya! express app.del obsoleto: Use app.delete en su lugar –

3

En JSHint 1.1.x puede establecer la opción para es5 jshint, y va a permitir el uso de palabras reservadas como propiedades por la especificación ES5.

A partir de JSHint 2.0 es5 es la opción predeterminada y se le debe permitir usar palabras reservadas como propiedades.

Para obtener más información puede dirigirse a http://www.jshint.com/docs/#options

+2

Esto ha cambiado; [a partir de la versión 2.0.0] (http://www.jshint.com/blog/2013-05-07/2-0-0/), JSHint se deshizo de la opción 'es5' y ahora asume que el código es ES5 a menos que se indique lo contrario a través de las nuevas opciones 'es3' y' esnext'. –

6

Otra manera de resolver esto habría sido utilizar bracket notation en lugar de dot notation.

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

Este tipo de trabajo alrededor era necesario en el pasado cuando se trabaja con IndexedDB que define ambos .delete y .continue métodos.

Estos días este tipo de solución no debería ser necesario. Ever since ES5 JavaScript ha permitido que los nombres de propiedad usen palabras reservadas. Durante mucho tiempo, jsHint dejó de asumir que su código era ES3, pero starting with version 2.0.0 por defecto asume que es ES5 y no se quejará de que las palabras reservadas se usen como nombres de propiedad.

Cuestiones relacionadas