[javascript] 구문 오류 : 엄격 모드에서 const 사용

node.js로 작업하고 있으며 내 js 파일 중 하나에서 사용 const하고 "strict mode"있습니다. 실행하려고 할 때 오류가 발생합니다.

SyntaxError: Use of const in strict mode.

가장 좋은 방법은 무엇입니까?

편집하다:

'use strict'
const MAX_IMAGE_SIZE = 1024*1024; // 1 MB



답변

constlet(ES6과 조화 일명) 인 ECMAScript 2015의 일부이며, Node.js를 0.10 또는 0.12에서 기본적으로 사용되지 않았다. Node.js 4.x 이후 “V8에서 안정적인 것으로 간주되는 모든 배송 [ES2015] 기능은 기본적으로 Node.js에서 켜져 있으며 어떤 종류의 런타임 플래그도 필요하지 않습니다.” Node.js 문서에는 기본적으로 활성화 된 ES2015 기능과 런타임 플래그가 필요한 사용자에 대한 개요가 있습니다. 따라서 Node.js 4.x 이상으로 업그레이드하면 오류가 사라집니다.

Node.js 0.10 및 0.12에서 일부 ECMAScript 2015 기능 ( const및 포함 let) 을 활성화합니다 . 하모니 플래그로 노드 프로그램을 시작하십시오. 그렇지 않으면 구문 오류가 발생합니다. 예를 들면 다음과 같습니다.

node --harmony app.js

그것은 모두 엄격한 js가 어느쪽에 있는지에 달려 있습니다. const서버 측에서 선언 과 함께 엄격 모드를 사용 하고 harmony 플래그로 서버를 시작하는 것이 좋습니다 . 클라이언트 측에서는 모든 클라이언트 브라우저가 선언을 지원하지는 않으므로 Babel 또는 이와 유사한 도구를 사용하여 ES2015를 ES5로 변환해야합니다 const.


답변

이것이 nodejs에서 발생하는 경우 이전 버전의 nodejs 때문입니다. 다음을 사용하여 노드를 업데이트하십시오.

1) NPM 캐시를 지우십시오.

sudo npm cache clean -f

2) ‘n’이라는 작은 도우미를 설치하십시오.

sudo npm install -g n

3) 최신 안정 NodeJS 버전 설치

sudo n stable

https://stackoverflow.com/a/19584407/698072 에서 가져온 nodejs 지침 업데이트


답변

일반적으로이 오류는 코드가 실행되는 노드 버전이 예상보다 오래된 경우에 발생합니다. (즉, 0.12 이상).

nvm을 사용하는 경우 올바른 버전의 노드를 사용하고 있는지 확인하십시오. 엄격 모드에서 const에 대한 node.green호환성을 확인할 수 있습니다

다른 게시물에서 비슷한 문제를 발견하고 답변 을 자세하게 게시했습니다.


답변

노드를 업데이트 한 후 한 가지 중요한 단계는 노드 바이너리를 최신 설치된 노드 버전에 연결하는 것입니다.

sudo ln -sf /usr/local/n/versions/node/6.0.0/bin/node /usr/bin/node  


답변

이것은 아마도 모든 사람을위한 해결책은 아니지만 나에게 적합했습니다.

NVM을 사용하는 경우 실행중인 코드에 올바른 버전의 노드를 활성화하지 않았을 수 있습니다. 재부트하면 기본 버전의 노드가 시스템 기본값으로 다시 변경됩니다.

잘 작동했던 react-native로 작업 할 때이 문제가 발생했습니다. 이 문제를 해결하려면 nvm을 사용하여 올바른 버전의 노드를 사용하십시오.


답변

질문이 제기 된 이후로 const키워드 의 초안 은 이미 ECMAScript 2015의 일부로 실제 표준 입니다. 또한 Node.js의 현재 버전은 플래그 없이 const 선언지원합니다--harmony .

위하면 지금 실행할 수 있습니다 말했다 node app.js으로 app.js:

'use strict';
const MB = 1024 * 1024;
...

구문 설탕과 엄격 모드의 이점을 모두 얻습니다.


답변

최근에 비슷한 문제가 발생하여이 Q & A에서 끝났습니다. 이것은 OP가 찾고 있던 솔루션이 아니지만 비슷한 문제를 가진 다른 사람들을 도울 수 있습니다.

PM2 를 사용하여 프로젝트를 실행하고 주어진 스테이징 서버에서 실제로 오래된 버전의 Node, NPM 및 PM2가있었습니다. 그러나 모든 것을 업데이트했지만 동일한 오류가 계속 발생했습니다.

SyntaxError : 엄격 모드에서 const 사용.

응용 프로그램을 여러 번 중지하고 시작하려고했습니다. 또한 모든 것을 다시 업데이트하려고했습니다. 아무것도 효과가 없었습니다. 내가 달릴 때 경고가 나타날 때까지 pm2 start:

>>>> 인 메모리 PM2가 오래되었습니다.
>>>> $ pm2 update
메모리 PM2 버전 : 0.15.10
로컬 PM2 버전 : 3.2.9

잡았다! 을 실행 한 후 pm2 update마침내 응용 프로그램을 예상대로 실행할 수있었습니다. 더 이상 “엄격 모드에서 연속”오류가 없습니다.