Ich habe versucht , Node Version 6.2.1 mit einem Teil meines Codes zu verwenden. Hatte Pläne, die meisten Hyper-Callback-orientierten Codes auf etwas zu migrieren, das sauberer aussieht und möglicherweise eine bessere Leistung erbringt.
Ich habe keine Ahnung warum, das Terminal gibt einen Fehler aus, wenn ich versuche, den Knotencode auszuführen.
helloz.js
(async function testingAsyncAwait() {
await console.log("Print me!");
})();
Protokolle -
BOZZMOB-M-T0HZ:rest bozzmob$ node helloz.js
/Users/bozzmob/Documents/work/nextgennms/rest/helloz.js:1
(function (exports, require, module, __filename, __dirname) { (async function testingAsyncAwait() {
^^^^^^^^
SyntaxError: Unexpected token function
at Object.exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:513:28)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Function.Module.runMain (module.js:575:10)
at startup (node.js:160:18)
at node.js:456:3
BOZZMOB-M-T0HZ:rest bozzmob$ node -v
v6.2.1
Was vermisse ich? Bitte werfen Sie mir etwas Licht auf das gleiche.
Update 1:
Ich habe versucht, Babel zu verwenden, wie Quentin vorgeschlagen hat. Es wird jedoch immer noch der folgende Fehler angezeigt.
Aktualisierter Code-
require("babel-core/register");
require("babel-polyfill");
(async function testingAsyncAwait() {
await console.log("Print me!");
})();
Protokolle -
BOZZMOB-M-T0HZ:rest bozzmob$ babel helloz.js > helloz.trans.js
SyntaxError: helloz.js: Unexpected token (3:7)
1 | require("babel-polyfill");
2 |
> 3 | (async function testingAsyncAwait() {
| ^
4 | await console.log("Print me!");
5 | })();
Antworten:
Async-Funktionen werden von Node-Versionen, die älter als Version 7.6 sind, nicht unterstützt .
Sie müssen Ihren Code (z. B. mit Babel ) auf eine Version von JS übertragen, die Node versteht, wenn Sie eine ältere Version verwenden.
Die aktuelle (2018) LTS- Version von Node.js ist jedoch 8.x. Wenn Sie also eine frühere Version verwenden, sollten Sie ein Upgrade in Betracht ziehen.
quelle
Nodejs unterstützt async / await ab Version 7.6.
Beitrag veröffentlichen: https://v8project.blogspot.com.br/2016/10/v8-release-55.html
quelle
Node.JS nicht vollständig ES6 unterstützt derzeit, so dass Sie entweder verwenden können asyncawait Modul oder transpile es Bable verwenden.
Installieren
helloz.js
quelle
Wenn Sie nur experimentieren, können Sie
babel-node
die neuen JavaScript-Funktionen mit dem Befehlszeilentool ausprobierenInstallieren Sie
babel-cli
in Ihrem Projekt$ npm install --save-dev babel-cli
Installieren Sie die Voreinstellungen
$ npm install --save-dev babel-preset-es2015 babel-preset-es2017
Richten Sie Ihre Babel-Voreinstellungen ein
Erstellen Sie
.babelrc
im Projektstammordner den folgenden Inhalt:{ "presets": ["es2015","es2017"] }
Führen Sie Ihr Skript mit aus
babel-node
$ babel-node helloz.js
Dies ist nur für die Entwicklung und das Testen gedacht, aber genau das scheinen Sie zu tun. Am Ende möchten Sie ein Webpack (oder ähnliches) einrichten, um Ihren gesamten Code für die Produktion zu transpilieren
Wenn Sie den Code woanders ausführen möchten, kann Webpack helfen. Hier ist die einfachste Konfiguration, die ich ausarbeiten könnte:
quelle
node v6.6.0
Wenn Sie nur in der Entwicklung verwenden. Du kannst das:
das
package.json
wäre so:.babelrc
Datei erstellen und schreiben:Führen Sie dann Ihr
async/await
Skript folgendermaßen aus:quelle
Obwohl ich zu spät komme, funktionierte es für mich, den Transform-Async-Generator und das Transform-Runtime- Plugin wie folgt zu installieren :
npm i babel-plugin-transform-async-to-generator babel-plugin-transform-runtime --save-dev
das
package.json
wäre so:.babelrc
Datei erstellen und schreiben:und dann gerne mit codieren
async/await
quelle
Fügen Sie die neueste Version der Node Engine hinzu und geben Sie sie an. Sagen wir zu diesem Zeitpunkt, ich habe Version 8 hinzugefügt.
in der folgenden Datei
quelle
Ich hatte auch das gleiche Problem.
Ich habe Node v 6.2 neben purgecss in meinem gulpfile ausgeführt. Das Problem trat nur auf, als ich ein neues Laravel-Projekt erstellte. Bis zu diesem Zeitpunkt hatte ich nie ein Problem mit der Reinigung.
Nach der Aussage von @ Quentin, dass Knotenversionen vor 7.6 keine asynchronen Funktionen unterstützen, habe ich beschlossen, meine Knotenversion auf 9.11.2 zu aktualisieren
Das hat bei mir funktioniert:
1-
2-
Löschen Sie 'node_modules' aus dem Routenverzeichnis
3-
Ich bin mir immer noch nicht sicher, wie Node / Purgecss vor dem Update funktioniert hat. Aber das hat den Trick gemacht.
quelle