Try running this.
npm install @babel/core --save
babel changed their package so your babel-core will not be the same as @babel/core.
» npm install babel-core
node.js - Cannot find module '@babel/core' - Stack Overflow
babeljs - What is the difference between babel-core and @babel/core? - Stack Overflow
babeljs - babel vs babel-core vs babel-runtime - Stack Overflow
Requires Babel "^7.16.0", but was loaded with "7.12.3"
Try running this.
npm install @babel/core --save
babel changed their package so your babel-core will not be the same as @babel/core.
The recent Babel upgrade to version 7 changed the namings of the node packages.
For instance, now you have to install
npm install --save-dev @babel/core @babel/preset-env
and
npm install --save-dev @babel/preset-react
to get it working with React. Then you can use these in your .babelrc file:
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
]
}
Or as alternative, when not having a .babelrc, in your package.json:
...
"keywords": [],
"author": "",
"license": "ISC",
"babel": {
"presets": [
"@babel/preset-env",
"@babel/preset-react"
]
},
"devDependencies": {
...
If you want to get more into it, you can checkout this recent Webpack + Babel + React setup.
» npm install @babel/core
babel-core is the API. For v5 the babel package is the CLI and depends on babel-core. For v6, the babel-cli package is the CLI (the CLI bin command is still babel though) and the babel package doesn't do anything. babel-runtime I guess is just the runtime (polyfill and helpers) to support code that's already been transformed.
TL;DR The things to compare here are:
- babel (use for 5.x.x) vs babel-cli+babel-core (pick one for 6.x.x)
- babel-polyfill (use for non-libraries) vs babel-runtime+babel-plugin-transform-runtime (use for libraries)
From https://babeljs.io/blog/2015/10/31/setting-up-babel-6:
The babel package is no more. Previously, it was the entire compiler and all the transforms plus a bunch of CLI tools, but this lead to unnecessarily large downloads and was a bit confusing. Now we’ve split it up into two separate packages: babel-cli and babel-core.
npm install --global babel-cli
or
npm install --save-dev babel-core
If you want to use Babel from the CLI you can install babel-cli or if you want to use the Node API you can install babel-core.
babel-runtime just allows polyfills that don't pollute the global space, unlike babel-polyfill which pollutes your global space. From http://babeljs.io/docs/plugins/transform-runtime/:
[babel-runtime] automatically polyfills your code without polluting globals. (This plugin is recommended in a library/tool)
If you use babel-runtime, you should also
npm install --save-dev babel-plugin-transform-runtime
In most cases, you should install babel-plugin-transform-runtime as a development dependency (with --save-dev) and babel-runtime as a production dependency (with --save).
The transformation plugin is typically used only in development, but the runtime itself will be depended on by your deployed/published code.
Also, babel-runtime+babel-plugin-transform-runtime and babel-polyfill are generally mutually exclusive--meaning you should only use one or the other. From a comment here http://jamesknelson.com/the-six-things-you-need-to-know-about-babel-6/:
You should be using either babel-polyfill or babel-runtime. They are mutually exclusive—unless of course you know what you are doing. But they are essentially the same thing. These are just helpers. babel-polyfill achieves the same goal by mutating globals whereas babel-runtime does so modularly. Unless you are developing a library, I’d recommend you use the polyfill.