2016-09-26 4 views
2

grunt-1.0.1을 grunt-contrib-uglify 2.0.0과 함께 사용하여 프로젝트의 .js 파일을 연결합니다. 이것은 오늘날까지 괜찮 았는데, 여기에는 기본값을 갖는 함수 매개 변수가있는 JavaScript 함수가 도입되었습니다. grunt-contrib-uglify가 기본값을 가진 함수 매개 변수를 사용할 때 오류를 throw합니다.

지금이 오류 메시지의 그런트 작업 결과 :

Running "uglify:app" (uglify) task 
JS_Parse_Error { 
    message: 'SyntaxError: Unexpected token operator «=», expected punc «,»', 
filename: 'app.js', 

이 작업에 의해 반향으로 우려의 app.js 라인은 다음과 같습니다 라인에서 정확한 열

function addNumbers(a, b=1){ 
    console.log(a + b); 
} 

입니다 여기서 b=1이 발견됩니다.

기본값을 제거하면 모든 것이 정상적으로 작동합니다.

왜 무단 전재 혐의는 여기에 불평하고 있습니까? 이 문제를 어떻게 해결할 수 있습니까?

답변

1

오류 메시지를 참조하면 분명히 ES6을 사용하지 않는 것입니다. b의 기본값을 설정하는 방법은 ES6에서만 작동합니다. 여기

당신은 또한 bundefined||하지 않은 경우, 당신은 확인할 수 있습니다 0의 값을 가지고 b을 수락 할 경우 b

function addNumbers(a, b) { 
    b = b || 1; 
    console.log(a + b); 
} 

에 대한 기본 값을 설정하기 위해 무엇을 할 수 numberb의 기본값을 1으로 설정하십시오.

function addNumbers(a, b) { 
    b = (b === undefined || typeof b !== 'number') ? 1 : b; 
    console.log(a + b); 
} 
+0

그렇다면 어떻게하면 grunt-contrib-uglify가 구식 사양이 아닌 ES6을 사용하도록 할 수 있습니까? 이것은 node.js 버전의 문제입니까? 제가 개발 환경에서 실행하고 있습니까? 그렇다면 v.4.5.0을 실행 중입니다. – Bunjip

+1

나는 이것을 구식 사양으로 생각하지는 않겠지 만, ES6 기능 지원과 관련하여 node.js 버전은 중요합니다. 다음 표 [Node.js ES2015 Support] (http : // node .green /), 특히 * 기본 함수 매개 변수 *를 사용할 수 있습니다. 당신이 할 수있는 일은 당신의 꿀꿀 소리 파일에 ES6에서 ES5로 옮겨 갈 작업을 추가하는 것입니다. 여기에 당신을 위해 이것을 할 수있는 툴툴 거리는 플러그인이 있습니다. [grunt-babel] (https://github.com/babel/grunt-babel). – DavidDomain