tutorial register online babelify javascript gulp ecmascript-6 babeljs ecmascript-5

javascript - register - gulp babel, las exportaciones no están definidas



babelify (1)

Considere el siguiente código de ejemplo (¿y quizás 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 ejecuto esto obtengo lo siguiente:

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

Por el gusto de hacerlo, 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;

arroja el mismo error. Ideas?


Eso no es realmente un problema de Babel, solo intentas ejecutar el código CommonJS (transpilado desde la export ES6) 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 .

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

En mi ejemplo, puede cargar el código JS en el navegador de forma sincrónica (precargada) o de forma asíncrona (cargada de forma diferida).