Eu estou trabalhando com node.js, e em um dos meus arquivos js eu estou usando const
no "strict mode"
. Ao tentar executá-lo, estou recebendo um erro:
SyntaxError: Use of const in strict mode.
Qual é a melhor prática para fazer isso?
Editar:
'use strict'
const MAX_IMAGE_SIZE = 1024*1024; // 1 MB
javascript
node.js
Vivek P
fonte
fonte
var
. Adicionar ponto-'use strict';
Respostas:
O
const
elet
faz parte do ECMAScript 2015 (também conhecido como ES6 e Harmony) e não foi ativado por padrão no Node.js. 0.10 ou 0.12. Desde o Node.js. 4.x, “Todos os recursos de remessa [ES2015], que a V8 considera estáveis, são ativados por padrão no Node.js. NÃO requerem nenhum tipo de sinalizador de tempo de execução.”. Os documentos do Node.js têm uma visão geral dos recursos do ES2015 ativados por padrão e de quem exige um sinalizador de tempo de execução . Portanto, atualizando para o Node.js.x ou mais recente, o erro deve desaparecer.Para habilitar alguns dos recursos do ECMAScript 2015 (incluindo
const
elet
) no Node.js. 0.10 e 0.12; inicie o programa do nó com um sinalizador de harmonia, caso contrário, você receberá um erro de sintaxe. Por exemplo:Tudo depende de qual lado seu js estrito está localizado. Eu recomendaria usar o modo estrito com
const
declarações no lado do servidor e iniciar o servidor com o sinalizador de harmonia. Para o lado do cliente, você deve usar o Babel ou uma ferramenta semelhante para converter o ES2015 para o ES5, pois nem todos os navegadores do cliente suportam asconst
declarações.fonte
'use strict';
você mesmo, mas deixe o código de terceiros decidir por si mesmo.Se isso estiver acontecendo no nodejs, é devido à versão mais antiga do nodejs. Atualize o nó usando,
1) Limpe o cache do NPM:
2) Instale um pequeno ajudante chamado 'n'
3) Instale a versão estável mais recente do NodeJS
Atualize as instruções do nodejs obtidas em https://stackoverflow.com/a/19584407/698072
fonte
node
versão. Por exemplo, no momento da redação deste documento,sudo n 6.9.4
instalará o LTS mais recente, ondesudo n stable
será instalado7.4.0
. Obviamente, essa é uma mudança radical, então tome cuidadon stable
. Como alternativa,sudo n lts
instala o LTS mais recente.Geralmente, esse erro ocorre quando a versão do nó no qual o código está sendo executado é mais antiga que o esperado. (ou seja, 0,12 ou mais).
Se você estiver usando o nvm, verifique se a versão correta do nó está sendo usada. Você pode verificar a compatibilidade em node.green para const no modo estrito
Encontrei um problema semelhante em outro post e postei minha resposta em detalhes
fonte
/usr/bin/node
pasta, que tinha 0.10.46.Uma etapa importante após a atualização do nó é vincular o binário do nó à versão mais recente do nó instalado
fonte
which node
node --version
imprime o número da versão, por exemplov0.10.29
Provavelmente, essa não é a solução para todos, mas foi para mim.
Se você estiver usando o NVM, talvez não tenha ativado a versão correta do nó para o código que está executando. Após a reinicialização, sua versão padrão do nó volta ao padrão do sistema.
Estava enfrentando isso ao trabalhar com o react-native, que estava funcionando bem. Basta usar o nvm para usar a versão correta do nó para resolver esse problema.
fonte
nvm use version-number-you-need
é tudo o que você precisa fazer.Desde o momento em que a pergunta foi feita, o rascunho da
const
palavra-chave já é um padrão de vida como parte do ECMAScript 2015 . Além disso, a versão atual do Node.js suporta declarações const sem o--harmony
sinalizador.Com o exposto acima, agora você pode executar
node app.js
, comapp.js
:obtendo o açúcar da sintaxe e os benefícios do modo estrito.
fonte
MB
é uma potência de dez, enquanto um mebibyteMiB
é uma potência de dois. ie1MB = 1e6
e1MiB = 1024 * 1024
. Veja wikipedia: MebibyteRecentemente, tive um problema semelhante e terminei nesta sessão de perguntas e respostas. Essa não é a solução que o OP estava procurando, mas pode ajudar outras pessoas com um problema semelhante.
Estou usando o PM2 para executar um projeto e em um determinado servidor de temporariedade eu tinha uma versão muito antiga do Node, NPM e PM2. Atualizei tudo, no entanto, continuei mantendo o mesmo erro:
Tentei parar e iniciar o aplicativo várias vezes. Também tentei atualizar tudo novamente. Nada funcionou. Até notar um aviso quando corri
pm2 start
:Peguei vocês! Após a execução
pm2 update
, finalmente consegui executar o aplicativo conforme o esperado. Não há mais erros "const no modo estrito".fonte
const não é suportado pelo ECMAScript. Então, depois de especificar o modo estrito, você recebe um erro de sintaxe. Você precisa usar var em vez de const se quiser que seu código seja compatível com todos os navegadores. Eu sei, não a solução ideal, mas é o que é. Existem maneiras de criar propriedades somente leitura em JavaScript (consulte As propriedades somente leitura podem ser implementadas em JavaScript puro? ), Mas acho que pode ser um exagero, dependendo do seu cenário.
Abaixo está a nota de compatibilidade do navegador da MDN :
Compatibilidade do navegador
fonte
const
é suportado no ECMAScript 6 e é amplamente suportado: kangax.github.io/compat-table/es6/#const Mas você está certo na sua resposta -'use strict';
econst
não se mistura.const
é re-declarável no Safari 7, mas não no Opera 21, Chrome 35 e Firefox 29.O uso de
const
no modo estrito está disponível com o lançamento do Chrome 41. Atualmente, o Chrome 41 Beta já foi lançado e o suporta.fonte
fonte
npm install -g nave; nave use 6.11.1
+1