gulp babel, exportaciones no está definido


Considere el siguiente código de ejemplo (¿y tal vez lo estoy haciendo mal?)

 var FlareCurrency = {

 };

export {FlareCurrency};

Tengo la siguiente tarea:

gulp.task("compile:add-new-currency-minified", function(){
  return gulp.src('src/add-new-currency/**/*.js')
             .pipe(babel())
             .pipe(concat('Flare-AddNewCurrency.js'))
             .pipe(uglify({"preserveComments": "all"}))
             .pipe(gulp.dest('dist/minified/'));
});

Cuando corro esto obtengo lo siguiente:

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var FlareCurrency={};exports.FlareCurrency=FlareCurrency;

Por diversión, quería ejecutarlo en la consola, sí, sé que no hace nada, pero no esperaba ver esto:

Uncaught ReferenceError: exports is not defined(…)

La versión no minificada:

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
var FlareCurrency = {};

exports.FlareCurrency = FlareCurrency;

Lanza el mismo error. Ideas?

Author: twernt, 2015-10-23

1 answers

Eso no es realmente un problema de babel, solo está tratando de ejecutar código CommonJS (transpilado desde ES6 export) en el navegador sin preparación. CommonJS no se ejecuta en el navegador, debe usar una herramienta para empaquetarlo para el navegador, como Webpack o Browserify.

Simplemente por coincidencia esta semana creé un pequeño proyecto en Github que muestra una configuración de código Gulp + ES6 (usando export) + Babel + Webpack: gulp-es6-webpack-example.

En mi ejemplo puede cargar código JS en el navegador de forma sincrónica (precargado) o asincrónica (cargado perezosamente).

 41
Author: Tiago Romero Garcia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-23 04:18:11