wake-up-neo.com

"Unerwarteter Token-Import" in Nodejs5 und Babel?

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?

192
jovi

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"]
}
199

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/

51
vincent mathew
  1. Installieren Sie die Pakete: babel-core, babel-polyfill, babel-preset-es2015
  2. Erstelle .babelrc mit Inhalt: { "presets": ["es2015"] }
  3. Fügen Sie die 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.

26
Adiono

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.

14
kristina

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

5
Isaac Sekamatte

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

https://www.npmjs.com/package/babel-preset-react-native

5
jde-chil

Möglicherweise führen Sie nicht kompilierte Dateien aus. Fangen wir sauber an!

Erstellen Sie in Ihrem Arbeitsverzeichnis:

  • Zwei Ordner. Eine für vorkompilierten es2015-Code. Das andere für Babels Ausgabe. Wir werden sie "src" und "lib" nennen.
  • 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:

  • Installieren Sie Ihre Pakete: npm install
  • Übertragen Sie Ihr Quellverzeichnis in Ihr Ausgabeverzeichnis mit dem Flag -d (aka --out-dir), wie bereits in unserer package.json angegeben: npm run transpile-es2015
  • Führen Sie Ihren Code aus dem Ausgabeverzeichnis aus! node lib/index.js
5
MarbinJavier

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:

Boilerplate: node-es6

3
  • install -> "npm i --save-dev babel-cli babel-voreingestellt-es2015 babel-voreingestellt-stufe-0"

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

2
lior ben yosef

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
1
KARTHIKEYAN.A

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.

1
高建德

Ich habe Folgendes getan, um das Problem zu beheben (ex.js-Skript)

problem

$ 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

lösung

# 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
0
nsaboo

Wenn das Problem weiterhin besteht, sollten Sie die folgenden Schritte ausführen, um es zu beheben.

  1. Benutze babel 7 @babel/core @babel/present-env @babel/node und so weiter ...
  2. Fügen Sie .babelrc zum Stammverzeichnis Ihres Projekts hinzu, das den folgenden Code enthält.
{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": "current"
        }
      }
    ]
  ]
}
  1. Stellen Sie sicher, dass Sie die lokale Version von bebel node ./node_modules/.bin/babel-node main.js verwenden.

Jetzt solltest du in der Lage sein, import/export Anweisungen zu verwenden, fröhliches Hacken.

0
Ahmed M.Kamal