"unexpected token import" in Nodejs5 and babel?
From the babel 6 Release notes:
Since Babel is focusing on being a platform for JavaScript tooling and not an ES2015 transpiler, we’ve decided to make all of the plugins opt-in. This means when you install Babel it will no longer transpile your ES2015 code by default.
In my setup I installed the es2015 preset
npm install --save-dev babel-preset-es2015
or with yarn
yarn add babel-preset-es2015 --dev
and enabled the preset in my .babelrc
{ "presets": ["es2015"]}
Until modules are implemented you can use the Babel "transpiler" to run your code:
npm install --save babel-cli babel-preset-node6
and then
./node_modules/babel-cli/bin/babel-node.js --presets node6 ./your_script.js
If you dont want to type --presets node6
you can save it .babelrc file by:
{ "presets": [ "node6" ]}
See https://www.npmjs.com/package/babel-preset-node6 and https://babeljs.io/docs/usage/cli/
- Install packages:
babel-core
,babel-polyfill
,babel-preset-es2015
- Create
.babelrc
with contents:{ "presets": ["es2015"] }
- Do not put
import
statement in your main entry file, use another file eg:app.js
and your main entry file should requiredbabel-core/register
andbabel-polyfill
to make babel works separately at the first place before anything else. Then you can requireapp.js
whereimport
statement.
Example:
index.js
require('babel-core/register');require('babel-polyfill');require('./app');
app.js
import co from 'co';
It should works with node index.js
.