2012-07-10 14 views
9

Tôi đang sử dụng Express.js ontop của Node.js để tạo RESTful API và sử dụng grunt để xem tệp của tôi và tự động lint JavaScript của tôi.Sử dụng JSHint với Express.js/'delete' (một từ được dành riêng)

Mỗi lần tôi sử dụng chức năng xóa, nó được đánh dấu bởi JSHint:

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

Tôi hiểu rằng 'xóa' là một từ dành riêng, nhưng nó được lựa chọn bởi Express.js! Có cách nào tốt hơn để tìm hiểu về ứng dụng Express.js của tôi không? Bất kỳ cách nào để tắt kiểm tra này ??

+0

Thực hiện tìm kiếm nhanh Tôi tin rằng bạn có thể sử dụng tùy chọn 'es5' cho điều đó. – Alfred

Trả lời

28

Trong Express.js, hãy sử dụng del thay vì delete.

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

Tuyệt vời! Cảm ơn! :-D –

+5

Kỳ lạ, điều này không có trong tài liệu API ... – prauchfuss

+1

KHÔNG SỬ DỤNG del nữa! app.del không được dùng nữa: Sử dụng app.delete thay vì –

3

Trong JSHint 1.1.x bạn có thể thiết lập các tùy chọn es5 cho jshint, và nó sẽ cho phép bạn sử dụng các từ dành riêng như tài sản theo các đặc điểm kỹ thuật ES5.

Tùy chọn JSHint 2.0 es5 là tùy chọn mặc định và bạn nên được phép sử dụng các từ dành riêng làm thuộc tính.

Để biết thêm thông bạn có thể đi qua để http://www.jshint.com/docs/#options

+2

Điều này đã thay đổi; [kể từ phiên bản 2.0.0] (http://www.jshint.com/blog/2013-05-07/2-0-0/), JSHint đã loại bỏ tùy chọn 'es5' và bây giờ giả định mã là ES5 trừ khi được thông báo khác thông qua các tùy chọn 'es3' và' esnext' mới. –

6

Một cách khác để giải quyết việc này có thể đã được sử dụng bracket notation thay vì dot notation.

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

này sắp xếp công việc xung quanh là cần thiết trong quá khứ khi làm việc với IndexedDB trong đó xác định cả hai .delete.continue phương pháp.

Những ngày này loại giải pháp thay thế này không cần thiết. Ever since ES5 JavaScript đã cho phép tên thuộc tính sử dụng các từ dành riêng. Trong một thời gian dài jsHint được mặc định là giả sử mã của bạn là ES3, nhưng starting with version 2.0.0 nó mặc định là giả sử nó là ES5 và sẽ không phàn nàn về các từ dành riêng được sử dụng làm tên thuộc tính.

Các vấn đề liên quan