In der js-Datei habe ich importiert, anstatt zu erfordern
import co from 'co';
Ich habe versucht, es direkt von nodejs auszuführen, da der Import "Versandfunktionen" und Support ohne Laufzeitflag ( https://nodejs.org/en/docs/es6/ ) ist, aber ich habe ein Fehler
import co from 'co';
^^^^^^
SyntaxError: Unexpected token import
Dann habe ich versucht, babel zu benutzen
npm install -g babel-core
npm install -g babel-cli
npm install babel-core //install to babel locally, is it necessary?
und laufen durch
babel-node js.js
immer noch derselbe Fehler, unerwarteter Token-Import?
Wie könnte ich es loswerden?
Aus den Versionshinweisen zu babel 6:
Da Babel sich darauf konzentriert, eine Plattform für JavaScript-Tools und kein ES2015-Transpiler zu sein, haben wir beschlossen, alle Plug-ins zu aktivieren. Das heißt, wenn Sie Babel installieren, wird Ihr ES2015-Code standardmäßig nicht mehr transpiliert.
In meinem Setup habe ich das Preset es2015 installiert
npm install --save-dev babel-preset-es2015
oder mit Garn
yarn add babel-preset-es2015 --dev
und aktiviert die Voreinstellung in meinem .babelrc
{
"presets": ["es2015"]
}
Bis Module implementiert sind, können Sie den Babel "Transpiler" verwenden, um Ihren Code auszuführen:
npm install --save babel-cli babel-preset-node6
und dann
./node_modules/babel-cli/bin/babel-node.js --presets node6 ./your_script.js
Wenn Sie --presets node6
nicht eingeben möchten, können Sie die .babelrc-Datei folgendermaßen speichern:
{
"presets": [
"node6"
]
}
Siehe https://www.npmjs.com/package/babel-preset-node6 und https://babeljs.io/docs/usage/cli/
babel-core
, babel-polyfill
, babel-preset-es2015
.babelrc
mit Inhalt: { "presets": ["es2015"] }
import
-Anweisung nicht in Ihre Haupteingabedatei ein, sondern verwenden Sie eine andere Datei, z. B .: app.js
und Ihre Haupteingabedatei sollten babel-core/register
und babel-polyfill
erfordern, damit babel zunächst separat funktioniert. Dann können Sie die Anweisung app.js
where import
anfordern.Beispiel:
index.js
require('babel-core/register');
require('babel-polyfill');
require('./app');
app.js
import co from 'co';
Es sollte mit node index.js
funktionieren.
babel-preset-es2015
ist jetzt veraltet und Sie erhalten eine Warnung, wenn Sie versuchen, Laurences Lösung zu verwenden.
Verwenden Sie stattdessen babel-preset-env
, damit dies mit Babel 6.24.1+ funktioniert:
npm install babel-preset-env --save-dev
Fügen Sie dann env
zu Ihren Voreinstellungen in Ihrem .babelrc
hinzu:
{
"presets": ["env"]
}
Siehe die Babel-Dokumentation für weitere Informationen.
Aktuelle Methode ist zu verwenden:
npm install --save-dev babel-cli babel-preset-env
Und dann in .babelrc
{
"presets": ["env"]
}
diese Installation unterstützt Babel für die neueste Version von js (es2015 und höher). Schauen Sie sich Babeljs an
Vergessen Sie nicht, babel-node
zu Ihren Skripten in package.json
hinzuzufügen, wenn Sie Ihre js-Datei wie folgt ausführen.
"scripts": {
"test": "mocha",
//Add this line to your scripts
"populate": "node_modules/babel-cli/bin/babel-node.js"
},
Jetzt können Sie npm populate yourfile.js
im Terminal eingeben.
Wenn Sie Windows ausführen und interne oder externe Fehlerbefehle nicht erkannt werden, verwenden Sie den Knoten vor dem Skript wie folgt
node node_modules/babel-cli/bin/babel-node.js
Dann npm run populate
wenn Sie die Voreinstellung für Reactive-Native verwenden, wird der Import akzeptiert
npm i babel-preset-react-native --save-dev
und legen Sie es in Ihre .babelrc-Datei
{
"presets": ["react-native"]
}
in Ihrem Projektstammverzeichnis
Möglicherweise führen Sie nicht kompilierte Dateien aus. Fangen wir sauber an!
Erstellen Sie in Ihrem Arbeitsverzeichnis:
Eine package.json-Datei mit dem folgenden Objekt:
{
"scripts": {
"transpile-es2015": "babel src -d lib"
},
"devDependencies": {
"babel-cli": "^6.18.0",
"babel-preset-latest": "^6.16.0"
}
}
Eine Datei mit dem Namen ".babelrc" mit den folgenden Anweisungen: {"presets": ["latest"]}
Zuletzt schreiben Sie den Testcode in Ihre Datei src/index.js. In deinem Fall: import co from 'co'.
Über deine Konsole:
npm install
npm run transpile-es2015
node lib/index.js
Sie müssen babel-preset-env und nodemon für hot- neu laden.
Dann erstelle eine .babelrc-Datei mit folgendem Inhalt:
{
"presets": ["env"]
}
Zum Schluss erstellen Sie ein Skript in package.json:
"scripts": {
"babel-node": "babel-node --presets=env",
"start": "nodemon --exec npm run babel-node -- ./index.js",
"build": "babel src -d dist"
}
Oder benutzen Sie einfach diese Kesselplatte:
als nächstes in der Datei package.json in Skripten hinzufügen "start": "babel-node server.js"
{
"name": "node",
"version": "1.0.0",
"description": "",
"main": "server.js",
"dependencies": {
"body-parser": "^1.18.2",
"express": "^4.16.2",
"lodash": "^4.17.4",
"mongoose": "^5.0.1"
},
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-0": "^6.24.1"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "babel-node server.js"
},
"keywords": [],
"author": "",
"license": "ISC"
}
und erstelle eine Datei für babel im root ".babelrc"
{
"presets":[
"es2015",
"stage-0"
]
}
und starte npm im Terminal
Führen Sie die folgenden Schritte aus, um das Problem zu beheben:
1) Installieren Sie die CLI- und env-Voreinstellung
$ npm install --save-dev babel-cli babel-preset-env
2) Erstellen Sie eine .babelrc Datei
{
"presets": ["env"]
}
3) konfiguriere npm start in package.json
"scripts": {
"start": "babel-node ./server/app.js",
"test": "echo \"Error: no test specified\" && exit 1"
}
4) dann starte app
$ npm start
Alles, was Sie tun müssen, ist eine .babelrc-Datei wie diese hinzuzufügen:
{
"plugins": [
"transform-strict-mode",
"transform-es2015-modules-commonjs",
"transform-es2015-spread",
"transform-es2015-destructuring",
"transform-es2015-parameters"
]
}
und installiere diese Plugins als Abhängigkeiten mit npm.
dann versuche es mit babel-node ***. js nochmal. hoffe das kann dir helfen.
Ich habe Folgendes getan, um das Problem zu beheben (ex.js-Skript)
$ cat ex.js
import { Stack } from 'es-collections';
console.log("Successfully Imported");
$ node ex.js
/Users/nsaboo/ex.js:1
(function (exports, require, module, __filename, __dirname) { import { Stack } from 'es-collections';
^^^^^^
SyntaxError: Unexpected token import
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:152:10)
at Module._compile (module.js:624:28)
at Object.Module._extensions..js (module.js:671:10)
at Module.load (module.js:573:32)
at tryModuleLoad (module.js:513:12)
at Function.Module._load (module.js:505:3)
at Function.Module.runMain (module.js:701:10)
at startup (bootstrap_node.js:194:16)
at bootstrap_node.js:618:3
# npm package installation
npm install --save-dev babel-preset-env babel-cli es-collections
# .babelrc setup
$ cat .babelrc
{
"presets": [
["env", {
"targets": {
"node": "current"
}
}]
]
}
# execution with node
$ npx babel ex.js --out-file ex-new.js
$ node ex-new.js
Successfully Imported
# or execution with babel-node
$ babel-node ex.js
Successfully Imported
Wenn das Problem weiterhin besteht, sollten Sie die folgenden Schritte ausführen, um es zu beheben.
@babel/core @babel/present-env @babel/node
und so weiter ....babelrc
zum Stammverzeichnis Ihres Projekts hinzu, das den folgenden Code enthält.{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"node": "current"
}
}
]
]
}
./node_modules/.bin/babel-node main.js
verwenden.Jetzt solltest du in der Lage sein, import/export
Anweisungen zu verwenden, fröhliches Hacken.