2012-06-07 2 views
6

jshint을 사용하여 자바 스크립트 파일의 유효성을 검사하고 있습니다.숨기기`Mongoose가있는 JSLint에서 식별자를 찾고 그 대신에 'default'(예약어)`를 보았습니다

서버 쪽에서 나는 몽구스로 node.js를 사용하고 있습니다.

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

이 오류를 억제 할 수있는 방법이 있나요 : linting를 실행하는 경우

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

, 나는 오류가 발생합니다 : 몽구스에서 나는 같은 방식으로 도식을 작성하도록 권장하고있어? 정말 쓰는 대신 그 행동을 선호하는 것 :

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

http://jslinterrors.com/expected-an-identifier-and-instead-saw-a-a-reserved-word/ 기술적으로 말하기, 즉, 유효 JS입니다. 비록 JSHint에 구성 옵션이 있는지 확실하지 않습니다. –

+0

나는 그 점을 정말로 알게된다. 왜 Mongoose가 잘못된 JS를 작성하라고 제안합니까? :/ – jsalonen

+1

따옴표로 묶고 계속 이동하십시오. 그것은 처음에 나를 괴롭혔지만, 이제는 그것에 대해 생각하는 시간조차 마심이라고 느낍니다. – JohnnyHK

답변

4

"es5"옵션을 사용하여이 기능을 비활성화 할 수도 있습니다.

참조 : 대부분의 환경이 그것을 허용하는 것하지만

+0

"식별자가 필요하고 대신에 'finally'(예약어)가 보입니다." 이것은 AngularJS의 Promise API를 사용할 때의 문제입니다. – Alex

+1

이 오류가 계속 표시되면 JSHint 버전을 업데이트해야합니다. 2.0.0 이후 'es5' 옵션은 기본적으로 활성화되어 있지만이 답변에서 링크 된 기사에 대한 많은 추천을보고 있습니다. –

5

default 실제로 자바 스크립트에서 예약어 (https://developer.mozilla.org/en/JavaScript/Reference/Reserved_Words)입니다. 기술적으로 문제없이 객체 속성 이름에서 기본값을 사용할 수 있지만 해석기가 엄격 할 경우 (lint처럼) 해당 표기법에 문제가 발생할 수 있습니다.

가장 간단한 방법 : 따옴표를 추가하여 문제를 해결하십시오. 보푸라기는 당신을 더 이상 괴롭히지 않을 것입니다. 코드는 2 글자 더 길지만, linting이 지나치고 예약어를 사용하기 때문에 문제가 발생하지 않습니다.