J'utilise Babel 6 pour es2015 et réagis, ce qui nécessite babel-preset-es2015
et babel-preset-react
.
J'ajoute la propriété presets
dans .babelrc
mais cela me renvoie une erreur:
ERROR in ./src/client/entry.js
Module build failed: ReferenceError: [BABEL] /Users/brick/Dropbox/learncoding/node.js/isomorphic/src/client/entry.js: Unknown option: /Users/brick/Dropbox/learncoding/node.js/isomorphic/.babelrc.presets
at Logger.error (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-core/lib/transformation/file/logger.js:58:11)
at OptionManager.mergeOptions (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-core/lib/transformation/file/options/option-manager.js:126:29)
at OptionManager.addConfig (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-core/lib/transformation/file/options/option-manager.js:107:10)
at OptionManager.findConfigs (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-core/lib/transformation/file/options/option-manager.js:168:35)
at OptionManager.init (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-core/lib/transformation/file/options/option-manager.js:229:12)
at File.initOptions (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-core/lib/transformation/file/index.js:147:75)
at new File (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-core/lib/transformation/file/index.js:137:22)
at Pipeline.transform (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-core/lib/transformation/pipeline.js:164:16)
at transpile (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-loader/index.js:12:22)
at Object.module.exports (/Users/brick/Dropbox/learncoding/node.js/isomorphic/node_modules/babel-loader/index.js:69:12)
@ multi main
Mon fichier .babelrc
est:
{
"presets": [
"es2015",
"react"
]
}
Je peux exécuter la commande babel src -d lib
, cela fonctionne. Mais si je lance npm start
pour exécuter la babel
via package.json
, l’erreur apparaît.
Je pense que je peux ignorer l'erreur parce que l'application s'exécute. Mais je veux savoir pourquoi cette erreur et ne pas savoir ce qu’elle affecte.
Ma scripts
dans package.json
est:
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"clean": "rm -rf lib",
"build": "npm run clean && /usr/local/bin/babel src -d lib --experimental",
"server": "nodemon lib/server/server",
"dev-server": "node lib/server/webpack",
"watch-js": "/usr/local/bin/babel src -d lib --experimental -w",
"start": "npm run watch-js & npm run dev-server & npm run server"
},
Mon entry.js
est
import React from "react";
import Router from "react-router";
import ReactDOM from "react-dom";
import routes from "./routes";
import DataWrapper from './DataWrapper';
import createBrowserHistory from 'history/lib/createBrowserHistory';
let history = createBrowserHistory();
var data = JSON.parse(document.querySelector('#data').innerHTML);
ReactDOM.render(<DataWrapper data={data}><Router history = {history}>{routes}</Router></DataWrapper>, document.querySelector('#app'));
J'ai pensé que ce problème était dû à la version de babel-loader
et babel-core
.
Dans le package.json
, les dépendances ont été déclarées ^5.3.3
et ne seront donc pas mises à jour vers 6.x. Changez-le en >=5.3.3
ou ^6.0.0
.
^
signifie mettre à niveau la version secondaire mais pas la version principale.
J'ai rencontré cette erreur en essayant de construire preact
. Il s'avère que j'avais un fichier .babelrc
dans le répertoire parent qui interférait; après l'avoir enlevé, le problème a disparu.
Assurez-vous que vous avez réellement ces bibliothèques de préconfiguration dans votre node_modules
.
J'ai eu un message d'erreur similaire mais légèrement différent. La raison en était que j'essayais d'utiliser le paramètre prédéfini react
pour babel mais que babel-react-preset
était absent de mon node_modules
. Le résultat final était que babel essayait d'utiliser le contenu de la bibliothèque react
en tant que préréglage.
ERROR in ./ui/js/myproject.js
Module build failed: ReferenceError: [BABEL] /home/jsyrjala/myproject/ui/js/myproject.js: Unknown option: /home/jsyrjala/myproject/node_modules/react/react.js.Children
at Logger.error (/home/jsyrjala/myproject/node_modules/babel-core/lib/transformation/file/logger.js:43:11)
at OptionManager.mergeOptions (/home/jsyrjala/myproject/node_modules/babel-core/lib/transformation/file/options/option-manager.js:270:18)
at OptionManager.mergePresets (/home/jsyrjala/myproject/node_modules/babel-core/lib/transformation/file/options/option-manager.js:333:16)
at OptionManager.mergeOptions (/home/jsyrjala/myproject/node_modules/babel
Je peux travailler avec babel src --out-dir lib
, mais pas avec npm run XXX
. J'installe [email protected] CLI globalement sur ma machine. Après avoir installé babel-cli @ localement, cela peut fonctionner avec npm run
.
Dans certains cas, comme le mien, j'ai installé babel dans le monde entier, ce qui génère la même erreur. Vous pouvez d’abord désinstaller Babel puis installer babel-cli ^ 6.26.0 dans le cadre de vos dépendances, puis essayez d’exécuter à nouveau la commande npm start