2012-06-07 55 views
6

我正在使用jshint來驗證我的JavaScript文件。在JSLint中使用Mongoose抑制'預期的標識符',而是看到'default'(保留字)'

在服務器端,我使用node.js和Mongoose。在貓鼬,我鼓勵如同時尚的編寫大綱:

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

當運行掉毛,我得到錯誤:

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

有沒有辦法抑制這種錯誤?我真的寧願行爲,而不是寫的:

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

從技術上講,這是無效的JS,雖然大多數環境似乎允許它。雖然我不確定是否有JSHint中的配置選項。 –

+0

我真的明白這一點。爲什麼Mongoose建議我們寫無效的JS? :/ – jsalonen

+1

只需將它放在引號中,然後繼續。它起初也給我帶來了麻煩,但現在我覺得自己就像花了一些時間思考它。 – JohnnyHK

回答

4

您也可以使用「es5」選項禁用此功能。

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

+0

適用於「預期的標識符,而是最終看到''(保留字)。」這在使用AngularJS的Promise API時是個問題。 – Alex

+1

如果你仍然看到這個錯誤,那麼你應該更新你的JSHint版本。自2.0.0版本以來'es5'選項已被默認啓用,但我仍然從這個答案中看到大量鏈接文章的推介。 –

5

default的確是在JavaScript中的保留字(https://developer.mozilla.org/en/JavaScript/Reference/Reserved_Words)。雖然技術上你可以毫無問題地使用對象屬性名稱中的默認值,但如果你的解釋器是嚴格的(比如lint),那麼最終可能會出現這種符號的問題。

最簡單的前進方法:通過添加引號來解決問題。林特不會再抱怨你了。該代碼是兩個字符長,但所以什麼 - 林特通過,你保證沒有問題,因爲使用保留關鍵字。

相關問題