Ich arbeite mit node.js und in einer meiner js-Dateien, die ich const
in verwende "strict mode"
. Beim Versuch, es auszuführen, wird folgende Fehlermeldung angezeigt:
SyntaxError: Use of const in strict mode.
Was ist die beste Vorgehensweise, um dies zu tun?
Bearbeiten:
'use strict'
const MAX_IMAGE_SIZE = 1024*1024; // 1 MB
javascript
node.js
Vivek P.
quelle
quelle
var
. Semikolon hinzufügen'use strict';
Antworten:
Die
const
undlet
sind Teil von ECMAScript 2015 (auch bekannt als ES6 und Harmony) und wurden in Node.js 0.10 oder 0.12 standardmäßig nicht aktiviert. Seit Node.js 4.x sind alle Versandfunktionen [ES2015], die V8 als stabil erachtet, in Node.js standardmäßig aktiviert und erfordern KEIN Laufzeitflag. “ Node.js docs bietet einen Überblick darüber, welche ES2015-Funktionen standardmäßig aktiviert sind und für welche ein Laufzeitflag erforderlich ist . Durch ein Upgrade auf Node.js 4.x oder neuer sollte der Fehler verschwinden.Um einige der ECMAScript 2015-Funktionen (einschließlich
const
undlet
) in Node.js 0.10 und 0.12 zu aktivieren ; Starten Sie Ihr Knotenprogramm mit einem Harmony-Flag. Andernfalls wird ein Syntaxfehler angezeigt. Beispielsweise:Es hängt alles davon ab, auf welcher Seite sich Ihr striktes js befindet. Ich würde empfehlen, den strengen Modus mit
const
Deklarationen auf Ihrer Serverseite zu verwenden und den Server mit dem Harmony-Flag zu starten. Für die Client-Seite sollten Sie Babel oder ein ähnliches Tool verwenden, um ES2015 in ES5 zu konvertieren, da nicht alle Client-Browser dieconst
Deklarationen unterstützen.quelle
'use strict';
Sie sich immer selbst, aber lassen Sie den Code von Drittanbietern selbst entscheiden.Wenn dies in nodejs geschieht, liegt dies an der älteren Version von nodejs. Aktualisieren Sie den Knoten mit,
1) Löschen Sie den NPM-Cache:
2) Installieren Sie einen kleinen Helfer namens 'n'
3) Installieren Sie die neueste stabile NodeJS-Version
Aktualisieren Sie die Anweisungen von nodejs unter https://stackoverflow.com/a/19584407/698072
quelle
node
Version anzugeben . Zum Beispiel wird zum Zeitpunkt dieses Schreibenssudo n 6.9.4
das neueste LTSsudo n stable
installiert , wo es installiert wird7.4.0
. Offensichtlich ist das eine bahnbrechende Veränderung, also pass auf dich aufn stable
. Alternativ wirdsudo n lts
das neueste LTS installiert.Normalerweise tritt dieser Fehler auf, wenn die Version des Knotens, für den der Code ausgeführt wird, älter als erwartet ist. (dh 0,12 oder älter).
Wenn Sie nvm verwenden, stellen Sie bitte sicher, dass Sie die richtige Version des verwendeten Knotens haben. Sie können die Kompatibilität auf node.green für const im strengen Modus überprüfen
Ich habe ein ähnliches Problem in einem anderen Beitrag gefunden und dort meine Antwort ausführlich veröffentlicht
quelle
/usr/bin/node
Ordner mit 0.10.46 an.Ein wichtiger Schritt nach dem Aktualisieren Ihres Knotens besteht darin, Ihre Knotenbinärdatei mit der neuesten installierten Knotenversion zu verknüpfen
quelle
which node
node --version
druckt die Versionsnummer aus, zBv0.10.29
Dies ist wahrscheinlich nicht die Lösung für alle, aber es war für mich.
Wenn Sie NVM verwenden, haben Sie möglicherweise nicht die richtige Version des Knotens für den von Ihnen ausgeführten Code aktiviert. Nach dem Neustart ändert sich Ihre Standardversion des Knotens wieder in die Systemstandardversion.
Ich bin darauf gestoßen, als ich mit React-Native gearbeitet habe, was gut funktioniert hat. Verwenden Sie einfach nvm, um die richtige Version des Knotens zu verwenden, um dieses Problem zu lösen.
quelle
nvm use version-number-you-need
ist alles was du tun musst.Seit dem Zeitpunkt, an dem die Frage gestellt wurde, ist der Entwurf für das
const
Schlüsselwort bereits im Rahmen von ECMAScript 2015 ein Lebensstandard . Auch die aktuelle Version von Node.js unterstützt const-Deklarationen ohne das--harmony
Flag.Mit dem oben Gesagten können Sie jetzt laufen
node app.js
mitapp.js
:Erhalten Sie sowohl die Syntax Zucker als auch die Vorteile des strengen Modus.
quelle
MB
ist eine Zehnerpotenz, während ein MebibyteMiB
eine Zweierpotenz ist. dh1MB = 1e6
und1MiB = 1024 * 1024
. Siehe Wikipedia: MebibyteIch hatte kürzlich ein ähnliches Problem und landete in diesem Q & A. Dies ist nicht die Lösung, nach der das OP gesucht hat, kann aber anderen bei einem ähnlichen Problem helfen.
Ich verwende PM2 , um ein Projekt auszuführen, und auf einem bestimmten Staging-Server hatte ich eine wirklich alte Version von Node, NPM und PM2. Ich habe alles aktualisiert, aber den gleichen Fehler beibehalten:
Ich habe mehrmals versucht, die Anwendung zu stoppen und zu starten. Auch versucht, alles erneut zu aktualisieren. Nichts hat geklappt. Bis ich beim Laufen eine Warnung bemerkte
pm2 start
:Erwischt! Nach dem Ausführen
pm2 update
konnte ich die Anwendung endlich wie erwartet zum Laufen bringen. Keine "const in strict mode" -Fehler mehr.quelle
const wird von ECMAScript nicht unterstützt. Nachdem Sie den strengen Modus angegeben haben, wird ein Syntaxfehler angezeigt. Sie müssen var anstelle von const verwenden, wenn Ihr Code mit allen Browsern kompatibel sein soll. Ich weiß, nicht die ideale Lösung, aber es ist, was es ist. Es gibt Möglichkeiten, schreibgeschützte Eigenschaften in JavaScript zu erstellen (siehe Können schreibgeschützte Eigenschaften in reinem JavaScript implementiert werden? ), Aber ich denke, dass dies je nach Szenario möglicherweise zu viel des Guten ist.
Unten finden Sie einen Hinweis zur Browserkompatibilität von MDN :
Browser-Kompatibilität
quelle
const
wird in ECMAScript 6 unterstützt und wird weitgehend unterstützt: kangax.github.io/compat-table/es6/#const Aber Sie haben Recht mit Ihrer Antwort -'use strict';
undconst
mischen sich nicht.const
dies in Safari 7 erneut deklariert werden kann, jedoch nicht in Opera 21, Chrome 35 und Firefox 29.Die Verwendung
const
im strengen Modus ist mit der Veröffentlichung von Chrome 41 verfügbar. Derzeit ist Chrome 41 Beta bereits veröffentlicht und unterstützt diese.quelle
quelle
npm install -g nave; nave use 6.11.1
+1