javascript - run - Webpack umd library return Object.default
webpack ts loader (1)
Estoy escribiendo una lib con un paquete web con estas configuraciones:
output: {
path: path.join(''build''),
filename: ''my_lib.js'',
library: ''MyLib'',
libraryTarget: ''umd''
},
MyLib:
export default function() {
console.log(''MyLib'');
}
El problema es que cuando intento cargar build / my_lib.js en un navegador, la única manera de acceder a MyLib es a través de MyLib.default ...
¿Alguna idea?
Si está preguntando sobre alguna idea de por qué?
Si está utilizando Babel para habilitar las funciones de ES6, probablemente se encuentre frente a uno de los cambios entre Babel5 y Babel6.
Con Babel5 su código se transmite a esto:
''use strict'';
Object.defineProperty(exports, ''__esModule'', {
value: true
});
exports[''default''] = function () {
console.log(''MyLib'');
};
module.exports = exports[''default''];
Pero con Babel6 obtienes:
''use strict'';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function () {
console.log(''MyLib'');
};
¿Ves la diferencia?
module.exports = exports[''default''];
Esta línea fue asesinada en Babel6. Aquí se decidió:
Para exportar siempre un valor predeterminado a
exports.default
Si está preguntando sobre alguna idea para solucionarlo?
Puede agregar esta línea usted mismo o usar algún tipo de complemento babel que lo agregue .
const myLib = function () {
console.log(''MyLib'');
};
export default myLib;
module.exports = myLib;