SyntaxError: l'Utilisation de const en mode strict
Je travaille avec node.js et dans l'un de mes fichiers js, je suis en utilisant const
dans "strict mode"
. Lorsque vous essayez de l'exécuter, j'obtiens une erreur:
SyntaxError: Use of const in strict mode.
Quelle est la meilleure pratique pour ce faire?
Edit:
'use strict'
const MAX_IMAGE_SIZE = 1024*1024; //1 MB
- vérifiez dans chrome, ff fonctionne bien.
- utilisation
var
. Ajouter semikolon'use strict';
- En fait, je suis en utilisant Node.js yaar. Il fonctionne très bien dans ce.
- Aah... Échoue dans ideone.com
- Après la mise à jour du dernier Nœud de la version v5.3.0, il fonctionne bien maintenant.
- Si vous êtes à l'aide de Visual Studio et de voir ce problème découvrez cette réponse stackoverflow.com/q/44120850/681009
Vous devez vous connecter pour publier un commentaire.
La
const
etlet
font partie de ECMAScript 2015.k.un. ES6 et de l'Harmonie), et n'était pas activé par défaut dans Node.js à 0,10$, ou 0,12. Depuis Node.js 4.x, “Tous les frais d'expédition [ES2015] fonctions, qui V8 considère stable, sont activés par défaut sur Node.js et ne nécessite aucune sorte de drapeau d'exécution.”. Node.js docs est un aperçu de ce que ES2015 fonctionnalités sont activées par défaut, et qui ont besoin d'un drapeau d'exécution. Donc, par la mise à niveau vers Node.js 4.x ou plus récent, l'erreur devrait disparaître.Pour permettre à certains de l'ECMAScript 2015 fonctionnalités (y compris les
const
etlet
) dans Node.js de 0,10 et 0,12; démarrer votre nœud programme avec une harmonie drapeau, sinon vous aurez une erreur de syntaxe. Par exemple:Tout dépend de quel côté de votre stricte js est situé. Je vous conseille d'utiliser le mode strict avec
const
déclarations sur votre côté serveur et démarrer le serveur avec l'harmonie du pavillon. Pour le côté client, vous devez utiliser Babel ou un outil similaire pour convertir ES2015 à l'ES5, puisque ce ne sont pas tous les clients des navigateurs prennent en charge laconst
déclarations.'use strict';
vous-même, mais laissez la troisième partie du code de décider pour lui-même.Si ce qui se passe dans nodejs, elle est due à l'ancienne version de nodejs. Mise à jour nœud à l'aide,
1) Claire des MNP cache:
2) Installer un peu d'aide appelée 'n'
3) Installer la dernière version stable de NodeJS version
Mise à jour de nodejs instructions prises de, https://stackoverflow.com/a/19584407/698072
node
version. Par exemple, au moment d'écrire ces lignes,sudo n 6.9.4
va installer la dernière LTS, oùsudo n stable
va installer7.4.0
. Evidemment, c'est une modification de rupture, afin de prendre soin avecn stable
. Sinon,sudo n lts
installe le plus récent LTS.Généralement cette erreur se produit lorsque la version de nœud à l'encontre de laquelle le code est exécuté est plus vieux que prévu. (c'est à dire à 0,12 $ ou plus).
si vous utilisez nvm qu'veuillez vous assurer que vous avez la bonne version de nœud utilisé. Vous pouvez vérifier la compatibilité sur le nœud.verte pour const sous le mode strict
J'ai trouvé un problème similaire sur un autre post et posté ma réponse il n'en détail
/usr/bin/node
dossier, qui avait 0.10.46.Une étape importante après la mise à jour de votre noeud est de lier votre nœud binaire pour le dernier noeud installé la version
which node
Ce n'est probablement pas la solution pour tout le monde, mais c'était pour moi.
Si vous utilisez NVM, vous pourriez ne pas avoir activé la bonne version de nœud pour le code en cours d'exécution. Après le redémarrage, votre version par défaut de nœud de modifications dans le système par défaut.
Était en cours d'exécution en ce moment de travailler avec réagissent-natif qui avait été fonctionne bien. Utilisez simplement nvm pour utiliser la bonne version de nœud pour résoudre ce problème.
nvm use version-number-you-need
est tout ce que vous avez à faire.Depuis le temps que la question a été posée, le projet de
const
mot-clé est déjà un niveau de vie dans le cadre de ECMAScript 2015. Également la version actuelle de Node.js prend en charge déclarations const sans--harmony
drapeau.Avec le dessus de ladite vous pouvez maintenant exécuter
node app.js
, avecapp.js
:avoir à la fois la syntaxe de sucre et les avantages de la mode strict.
MB
est une puissance de dix, tandis qu'un mebibyteMiB
est une puissance de deux. c'est à dire1MB = 1e6
et1MiB = 1024 * 1024
. Voir wikipédia: MebibyteJ'ai eu un problème similaire récemment et s'est retrouvé dans ce Q&A. Ce n'est pas la solution de l'OP cherchais, mais peut aider d'autres personnes avec un problème similaire.
Je suis en utilisant PM2 pour exécuter un projet et dans une mise en scène de serveur, j'ai eu une très vieille version de Nœud, MNP et PM2. J'ai mis à jour tout, cependant, j'ai gardé en gardant la même erreur:
J'ai essayé d'arrêter et de démarrer l'application plusieurs fois. Aussi essayé de mettre à jour tout nouveau. Rien n'a fonctionné. Jusqu'à ce que j'ai remarqué un avertissement quand j'ai couru
pm2 start
:Gotcha! Après l'exécution de
pm2 update
, j'ai finalement été en mesure d'obtenir l'application qui s'exécute comme prévu. Pas de "const en mode strict" des erreurs de plus.const n'est pas pris en charge par ECMAScript. Donc, après vous spécifiez le mode strict, vous obtenez l'erreur de syntaxe. Vous devez utiliser le var au lieu de const si vous voulez que votre code soit compatible avec tous les navigateurs. Je sais, pas la solution idéale, mais elle est ce qu'elle est. Il y a des façons de créer des propriétés en lecture seule en JavaScript (voir Pouvez Propriétés en Lecture Seule être mis en œuvre en JavaScript?) mais je pense qu'il serait peut-être exagéré en fonction de votre scénario.
Ci-dessous est la compatibilité du navigateur note de MDN:
La compatibilité du navigateur
const
est pris en charge dans ECMAScript 6, et il est largement pris en charge: kangax.github.io/compat-table/es6/#const Mais vous avez raison dans votre réponse -'use strict';
etconst
ne se mélange pas.const
est de nouveau soumise à déclaration en Safari 7, mais pas à l'Opéra, 21, Chrome 35 et Firefox 29.L'utilisation de
const
en mode strict est disponible avec la sortie de google Chrome, 41.Actuellement, Chrome 41 Bêta est déjà sorti et la prend en charge.