source

구문 오류:strict 모드에서의 const 사용

factcode 2022. 11. 16. 21:24
반응형

구문 오류:strict 모드에서의 const 사용

node파일을 파일 중 에서 node.js 파일을 사용하고 const"strict mode"과 같은 실행하려고 하면 다음 오류가 나타납니다.

SyntaxError: Use of const in strict mode.

이를 위한 베스트 프랙티스는 무엇입니까?

편집:

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

const ★★★★★★★★★★★★★★★★★」letECMAScript 2015(일명.k.a)의 일부입니다.ES6 및 Harmony)는 Node.js 0.10 또는 0.12에서는 디폴트로 활성화되지 않았습니다.Node.js 4.x 이후 "V8이 안정적이라고 간주하는 모든 출하 [ES2015] 기능은 Node.js에서 기본적으로 켜져 있으며 런타임 플래그가 필요하지 않습니다."Node.js docs에는 기본적으로 활성화되어 있는 ES2015 기능과 런타임 플래그가 필요한 사용자에 대한 개요가 나와 있습니다.따라서 Node.js 4.x 이후로 업그레이드하면 오류가 사라집니다.

기능(ECMAScript 2015 포함)을const ★★★★★★★★★★★★★★★★★」let0. 및플래그를 구문 오류가 합니다.) Node.js 0.10 " 0.12 " Harmony " " " 。이치노예를 들어 다음과 같습니다.

node --harmony app.js

이 모든 것은 당신의 엄밀한 js가 어느 쪽에 위치하느냐에 달려 있습니다.와 strict 모드를 함께 하는 것이 .const서버 측에서 선언하고 조화 플래그를 사용하여 서버를 시작합니다.클라이언트 측에서는 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을 사용하는 경우 올바른 버전의 노드가 사용되고 있는지 확인하십시오.node.green에서 strict 모드에서의 const 호환성을 확인할 수 있습니다.

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

노드 업데이트 후 중요한 절차 중 하나는 노드 바이너리를 최신 설치된 노드 버전으로 링크하는 것입니다.

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

이것은 모두를 위한 해결책은 아닐지도 모르지만, 그것은 나를 위한 것이었다.

NVM을 사용하는 경우 실행 중인 코드에 대해 올바른 버전의 노드를 사용하도록 설정하지 않았을 수 있습니다.재부팅 후 노드의 기본 버전이 시스템 기본값으로 돌아갑니다.

리액션 네이티브와 함께 일할 때 잘 작동하던 차에 부딪혔어요.이 문제를 해결하려면 nvm을 사용하여 올바른 버전의 노드를 사용하십시오.

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

과 같이 이제 .node app.js, 를 사용하여, 를 참조해 주세요.app.js:

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

sugar 구문과 strict 모드의 장점을 모두 얻을 수 있습니다.

저도 최근에 비슷한 문제가 있어서 이 Q&A를 하게 되었습니다.이는 OP가 찾고 있던 솔루션은 아니지만 비슷한 문제를 안고 있는 다른 사람들에게 도움이 될 수 있습니다.

프로젝트 실행에 PM2를 사용하고 있으며, 특정 스테이징 서버에는 매우 오래된 버전의 Node, NPM 및 PM2가 있습니다.모든 것을 업데이트했지만 계속 같은 오류를 유지하고 있습니다.

구문 오류:strict 모드에서의 const 사용.

앱을 여러 번 정지 및 기동하려고 했습니다.또한 모든 것을 다시 업데이트하려고 했다.아무것도 안 먹혔어.가 도망쳤을 때 경고를 알아차릴 때까지pm2 start:

경우 작업을 수행합니다
$ >>> $pm2 갱신
버전:0.10pm2PM2 버전: 0.15.10
버전: 3.2 PM2 버전: 3.2.9

! 도망친 에!pm2 update드디어 예상대로 어플리케이션을 실행할 수 있었습니다. '는 없어졌습니다. '엄격 모드에서의 상수'입니다.

pm2를 사용하여 노드 프로세스를 시작하고 유지했습니다.

CLI 에서는 완벽하게 동작했습니다.

which node
/usr/local/bin/node
node -v
v10.15.0

그러나 cronjob을 셋업하여 구문 오류가 발생하였습니다.

다음 하여 cronjob을 체크합니다.which node ★★★★★★★★★★★★★★★★★」node -v의외로 다른 경로와 버전이었다.

which node
/usr/bin/node
node -v
v0.10.48

cronjob .--interpreterpm2:

pm2 start dist/server.js --interpreter=/usr/local/bin/node 

「 」의 constChrome 41 출시와 함께 strict 모드로 사용할 수 있습니다.현재 Chrome 41 Beta가 이미 출시되어 지원되고 있습니다.

cd /
npm install -g nave
nave use 6.11.1
node app.js

ECMAScript에서는 const가 지원되지 않습니다.따라서 strict 모드를 지정하면 구문 오류가 발생합니다.코드가 모든 브라우저와 호환되도록 하려면 const 대신 var를 사용해야 합니다.나도 알아, 이상적인 해결책은 아니지만 그게 바로 그거야.JavaScript에서 읽기 전용 속성을 만드는 방법은 있지만(Can Read-Only Properties be Implemented in Pure JavaScript? 참조) 시나리오에 따라서는 오버킬이 될 수 있습니다.

MDN의 브라우저 호환성 노트를 다음에 나타냅니다.

브라우저 호환성

현재 const 실장은 Mozilla 고유의 확장이며 ECMAScript 5의 일부가 아닙니다.Firefox & Chrome(V8)에서 지원됩니다.Safari 5.1.7 및 Opera 12.00 에서는 이러한 브라우저에서 const를 사용하여 변수를 정의해도 나중에 값을 변경할 수 있습니다.Internet Explorer 6-10에서는 지원되지 않지만 Internet Explorer 11에는 포함되어 있습니다.const 키워드는 현재 함수 범위에서 상수를 선언합니다(var로 선언된 변수 등).

Firefox는 적어도 버전 13 이후 상수를 다시 닫으면 TypeError를 발생시킵니다.상수에 다른 값을 할당하면 모든 주요 브라우저가 통지 또는 오류를 생성하지 않습니다.이러한 작업의 반환값은 할당된 새 값의 값이지만 재할당은 Firefox 및 Chrome에서만 실패합니다(최소한 버전 20 이후).

const는 ECMAScript 6에 의해 정의되지만 의미는 다릅니다.let 문을 사용하여 선언된 변수와 마찬가지로 const로 선언된 상수는 블록 범위가 지정됩니다.

언급URL : https://stackoverflow.com/questions/22603078/syntaxerror-use-of-const-in-strict-mode

반응형