Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Babel 6 CLI: Unexpected token export?

I'm trying to run Babel through it's CLI using babel-node but I keep getting the Unexpected token export error. I understand that Babel 6 is all about plugins and that I need to set the plugin through .babelrc but it doesn't seem to work properly.

So here are my questions:

  • Should I be using the syntax-export-extensions plugin? I've also tried using the alternative method which is setting the plugin through package.json but still no luck.
  • Also, does Babel 6's CLI have a global .babelrc option? It seems tedious if I have to install the plugins for every project that requires it...

For those who are curious of what I'm trying to export, then here is the class:

'use strict';

class Factorial {
  static solve (num) {
    if(num === 0) return 1;
    else return num * Factorial.solve(num - 1);
  }
}

console.log(Factorial.solve(5))

export default Factorial;
like image 371
iwatakeshi Avatar asked Oct 31 '15 06:10

iwatakeshi


Video Answer


1 Answers

The easiest way to get started is to use a preset.

First let's install our dependencies:

$ npm install --save-dev babel-cli babel-preset-es2015

Then add a build script to your package.json that runs Babel: (this is important because it will use your local version of babel-cli instead of a globally installed one)

"build": "babel input.js"

Your package.json should look like this:

{
  "name": "my-module",
  "devDependencies": {
    "babel-cli": "^6.x.x",
    "babel-preset-es2015": "^6.x.x"
  },
  "scripts": {
    "build": "babel input.js -o compiled.js"
  }
}

Finally you want to update your local .babelrc like this:

{
  "presets": ["es2015"]
}

Then you run npm run build and you're all set to go.

Also, does Babel 6's CLI have a global .babelrc option? It seems tedious if I have to install the plugins for every project that requires it...

That's a bad idea as it means you can't ever update it without updating every single one of your projects code. Having local versions means this potential error is less likely to occur.

like image 100
James Kyle Avatar answered Sep 27 '22 22:09

James Kyle