web-dev-qa-db-fra.com

"importation de jetons inattendue" dans Nodejs5 et babel?

Dans le fichier js, j'ai utilisé importer au lieu d'exiger

import co from 'co';

Et essayé de l'exécuter directement par nodejs car il est dit que l'importation est 'fonctionnalités d'expédition' et un support sans aucun indicateur d'exécution ( https://nodejs.org/en/docs/es6/ ), mais j'ai eu une erreur

import co from 'co';
^^^^^^

SyntaxError: Unexpected token import

Puis j'ai essayé d'utiliser babel

npm install -g babel-core
npm install -g babel-cli
npm install babel-core //install to babel locally, is it necessary?

et géré par

babel-node js.js

toujours la même erreur, importation de jeton inattendue?

Comment pourrais-je m'en débarrasser?

192
jovi

Notes de diffusion de babel 6:

Puisque Babel se concentre sur l’utilisation de la plate-forme pour l’outil JavaScript et non sur un transpiler ES2015, nous avons décidé de faire en sorte que tous les plugins soient optionnels. Cela signifie que lorsque vous installez Babel, le code ES2015 ne sera plus copié par défaut.

Dans ma configuration, j'ai installé le préréglage es2015

npm install --save-dev babel-preset-es2015

ou avec du fil

yarn add babel-preset-es2015 --dev

et activé le préréglage dans mon .babelrc

{
  "presets": ["es2015"]
}
199

Jusqu'à ce que les modules soient implémentés, vous pouvez utiliser le "transpiler" de Babel pour exécuter votre code:

npm install --save babel-cli babel-preset-node6

puis

./node_modules/babel-cli/bin/babel-node.js --presets node6 ./your_script.js

Si vous ne voulez pas taper --presets node6, vous pouvez enregistrer le fichier .babelrc en:

{
  "presets": [
    "node6"
  ]
}

Voir https://www.npmjs.com/package/babel-preset-node6 et https://babeljs.io/docs/usage/cli/

51
vincent mathew
  1. Installer les packages: babel-core, babel-polyfill, babel-preset-es2015
  2. Créer .babelrc avec le contenu: { "presets": ["es2015"] }
  3. Ne mettez pas la déclaration import dans votre fichier d’entrée principal, utilisez un autre fichier, par exemple: app.js et votre fichier d’entrée principal devrait être requis babel-core/register et babel-polyfill pour que Babel fonctionne séparément à la première place avant toute autre chose. Ensuite, vous pouvez demander l’instruction app.jsimport.

Exemple:

index.js

require('babel-core/register');
require('babel-polyfill');
require('./app');

app.js

import co from 'co';

Cela devrait fonctionner avec node index.js.

26
Adiono

babel-preset-es2015 est maintenant obsolète et vous recevrez un avertissement si vous essayez d'utiliser la solution de Laurence.

Pour que cela fonctionne avec Babel 6.24.1+, utilisez plutôt babel-preset-env:

npm install babel-preset-env --save-dev

Ajoutez ensuite env à vos préréglages dans votre .babelrc:

{
  "presets": ["env"]
}

Voir les documents Babel pour plus d'informations.

14
kristina

La méthode actuelle consiste à utiliser:

npm install --save-dev babel-cli babel-preset-env

Et puis dans .babelrc

{
    "presets": ["env"]
}

cette installation installer le support de Babel pour la dernière version de js (es2015 et au-delà) Découvrez babeljs

N'oubliez pas d'ajouter babel-node à vos scripts à l'intérieur de package.json à utiliser lors de l'exécution de votre fichier js comme suit.

"scripts": {
   "test": "mocha",
    //Add this line to your scripts
   "populate": "node_modules/babel-cli/bin/babel-node.js" 
},

Vous pouvez maintenant npm populate yourfile.js à l'intérieur du terminal.

Si vous exécutez Windows et que vous exécutez une commande interne ou externe d'erreur non reconnue, utilisez le noeud situé en face du script, comme suit:

node node_modules/babel-cli/bin/babel-node.js

Alors npm run populate

5
Isaac Sekamatte

si vous utilisez le préréglage pour react-native, il accepte l'importation

npm i babel-preset-react-native --save-dev

et le mettre dans votre fichier .babelrc

{
  "presets": ["react-native"]
}

dans le répertoire racine de votre projet

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

5
jde-chil

Il se peut que vous exécutiez des fichiers non compilés. Commençons propre!

Dans votre répertoire de travail, créez:

  • Deux dossiers. Un pour le code es2015 précompilé. L'autre pour la sortie de Babel. Nous les nommerons "src" et "lib" respectivement.
  • Un fichier package.json avec l'objet suivant:

    { 
      "scripts": {
          "transpile-es2015": "babel src -d lib"
      },
      "devDependencies": {
          "babel-cli": "^6.18.0",
          "babel-preset-latest": "^6.16.0"
      }
    }
    
  • Un fichier nommé ".babelrc" avec les instructions suivantes: {"presets": ["latest"]}

  • Enfin, écrivez le code de test dans votre fichier src/index.js. Dans votre cas: import co from 'co'.

Par votre console:

  • Installez vos paquets: npm install
  • Transpilez votre répertoire source dans votre répertoire de sortie avec l’indicateur -d (aka --out-dir) tel que spécifié dans notre package.json: npm run transpile-es2015
  • Exécutez votre code à partir du répertoire de sortie! node lib/index.js
5
MarbinJavier

Vous devez utiliser babel-preset-env et nodemon pour les recharger.

Créez ensuite un fichier .babelrc avec le contenu ci-dessous:

{
  "presets": ["env"]
}

Enfin, créez un script dans package.json:

"scripts": {
    "babel-node": "babel-node --presets=env",
    "start": "nodemon --exec npm run babel-node -- ./index.js",
    "build": "babel src -d dist"
  }

Ou utilisez simplement ce passe-partout:

Boilerplate: node-es6

3
Priyanshu Chauhan
  • installer -> "npm i --save-dev babel-cli babel-preset-es2015 babel-preset-stage-0"

next dans le fichier package.json, ajoutez les scripts "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"
}

et créer un fichier pour babel, dans la racine ".babelrc"

    {
    "presets":[
        "es2015",
        "stage-0"
    ]
}

et lancez npm start dans le terminal

2
lior ben yosef

Impliquez les étapes suivantes pour résoudre le problème:

1) Installez le préréglage CLI et env

$ npm install --save-dev babel-cli babel-preset-env

2) Créez un fichier . Babelrc

{
  "presets": ["env"]
}

3) configurer npm start in package.json

"scripts": {
    "start": "babel-node ./server/app.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  }

4) puis lancez l'application

$ npm start
1
KARTHIKEYAN.A

@ jovi tout ce que vous avez à faire est d’ajouter un fichier .babelrc comme ceci:

{
  "plugins": [
    "transform-strict-mode",
    "transform-es2015-modules-commonjs",
    "transform-es2015-spread",
    "transform-es2015-destructuring",
    "transform-es2015-parameters"
  ]
}

et installez ces plugins en tant que devdependences avec npm.

ensuite, essayez à nouveau babel-node ***. js. J'espère que cela peut vous aider.

1
高建德

J'ai fait ce qui suit pour surmonter le problème (script ex.js)

problème

$ 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

solution

# 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

Pour ceux qui ont toujours le même problème, suivez les étapes ci-dessous pour résoudre ce problème.

  1. Utilisez babel 7 @babel/core @babel/present-env @babel/node et ainsi de suite ...
  2. Ajoutez .babelrc au répertoire racine de votre projet contenant le code ci-dessous.
{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": "current"
        }
      }
    ]
  ]
}
  1. Assurez-vous d'utiliser la version locale du noeud bebel ./node_modules/.bin/babel-node main.js

Vous devriez maintenant pouvoir utiliser les instructions import/export, un piratage heureux.

0
Ahmed M.Kamal