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?
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"]
}
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/
babel-core
, babel-polyfill
, babel-preset-es2015
.babelrc
avec le contenu: { "presets": ["es2015"] }
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.js
où import
.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
.
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.
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
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
Il se peut que vous exécutiez des fichiers non compilés. Commençons propre!
Dans votre répertoire de travail, créez:
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:
npm install
npm run transpile-es2015
node lib/index.js
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:
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
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
@ 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.
J'ai fait ce qui suit pour surmonter le problème (script ex.js)
$ 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
Pour ceux qui ont toujours le même problème, suivez les étapes ci-dessous pour résoudre ce problème.
@babel/core @babel/present-env @babel/node
et ainsi de suite ....babelrc
au répertoire racine de votre projet contenant le code ci-dessous.{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"node": "current"
}
}
]
]
}
./node_modules/.bin/babel-node main.js
Vous devriez maintenant pouvoir utiliser les instructions import/export
, un piratage heureux.