Je ne comprends pas ce qui ne va pas. J'ai vérifié sur un autre forum en parlant de transpilation et de babel. Que dois-je faire?
node -v
v5.5.0
mon code:
import recast from 'recastai'
et l'erreur
(function (exports, require, module, __filename, __dirname) { import recast from 'module1'
^^^^^^
SyntaxError: Unexpected token import
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:387:25)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:139:18)
at node.js:999:3
Les importations ES6 sont une fonctionnalité récemment introduite et la version stable actuelle de Node ne les prend pas encore en charge. Node.js issue tracker a un numéro ouvert pour cela - mais jusqu'à ce que V8 et Node ajoutent un support pour cette fonctionnalité, vous devrez utiliser un transpiler (le plus populaire étant babel ) pour pouvoir utiliser importations.
Pour essayer rapidement la transpilation, babel fournit un REPL basé sur le Web. Celui-ci montre que votre code est transpilé.
La page d'accueil du projet babel pointe vers les ressources appropriées pour démarrer avec Babel et l'intégrer à votre processus de développement.
Pour une configuration plus simple, visitez cette page setup et sélectionnez CLI dans la section des fonctions intégrées de Babel.
Cela implique essentiellement trois étapes simples:
npm install --save-dev babel-cli babel-preset-es2015
.babelrc
: echo '{ "presets": ["es2015"] }' > .babelrc
./node_modules/.bin/babel src -d lib
La page de configuration susmentionnée montre également comment ajouter un script npm pour simplifier la dernière étape. Alternativement, vous pouvez intégrer babel à votre éditeur ou créer une chaîne afin que vos fichiers soient automatiquement compilés au changement.
Au cas où vous ne voudriez pas vous occuper de Babel. Celui-ci a fonctionné pour moi.
const calc = require('./my_calc');
let {add, multiply} = calc;
1) Installer les derniers préréglages
yarn add --dev babel-preset-latest
2) Créez .babelrc
et ajoutez ce qui suit
{
"presets": ["latest"]
}
3) Exécutez votre script
npx babel-node yourscript.js
Ou dans votre fichier package.json
ajouter
"scripts": {
"start": "babel-node index.js"
}
C'est très simple pour résoudre ce problème, import
est la syntaxe ES6 et Node a du mal à la supporter, vous devez ajouter Babel en tant que transpiler, allez à package.json et ajoutez ce qui suit
Ajoutez d’abord une balise de script à utiliser avec babel lors de l’exécution du code JS pour la transcription.
"scripts": {
"start": "nodemon ./app.js --exec babel-node -e js"
}
Et ajoutez ensuite ce qui suit en tant que devDependencies de Babel
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-0": "^6.24.1"
}
après cela, vous devez également configurer le fichier de préconfigurations babel. Créez donc le fichier .babelrc dans le répertoire racine et définissez les préconfigurations comme suit.
{
"presets": [
"es2015",
"stage-0"
]
}
N'oubliez pas de faire un npm install
à la fin
Commencer
Nous allons d'abord installer babel-cli.
$ npm install --save-dev babel-cli
Avec quelques presets.
$ npm install --save-dev babel-preset-es2015 babel-preset-stage-2
package.json:
"scripts": {
"start": "babel-node index.js --presets es2015,stage-2"
}
courir:
$ npm start
Regarder les modifications de fichiers avec nodemon :
Nous pouvons améliorer notre script de démarrage npm avec nodemon.
$ npm install --save-dev nodemon
Ensuite, nous pouvons mettre à jour notre script de démarrage npm.
package.json:
"scripts": {
"start": "nodemon index.js --exec babel-node --presets es2015,stage-2"
}
courir:
$ npm start
Si vous utilisez pm2 , procédez comme suit:
$ pm2 start app.js --interpreter babel-node
Grâce à une proposition d'amélioration de NodeJS nous avons un chemin à parcourir Vous pouvez utiliser @standard-things/esm
Trouvez l'annonce ici Simplement lancer
npm i --save @std/esm
Dans votre emballé aujourd'hui.