Estoy tratando de crear un módulo que exporta múltiples clases de ES6. Digamos que tengo la siguiente estructura de directorios:
my/
└── module/
├── Foo.js
├── Bar.js
└── index.js
Foo.js
y Bar.js
cada uno exporta una clase ES6 predeterminada:
// Foo.js
export default class Foo {
// class definition
}
// Bar.js
export default class Bar {
// class definition
}
Actualmente tengo mi index.js
configuración así:
import Foo from './Foo';
import Bar from './Bar';
export default {
Foo,
Bar,
}
Sin embargo, no puedo importar. Quiero poder hacer esto, pero no se encuentran las clases:
import {Foo, Bar} from 'my/module';
¿Cuál es la forma correcta de exportar varias clases en un módulo ES6?
javascript
module
export
ecmascript-6
babel
ambiente
fuente
fuente
export
sin el predeterminadodefault
exportación. Imagina si alguien tratara de hacerloimport SomeClass from 'my/module'
. Esto importaría automáticamente eldefault
módulo desde esa ruta. Si tuviera varias exportaciones predeterminadas allí, ¿cómo sabría cuál importar?Respuestas:
Prueba esto en tu código:
Por cierto, también puedes hacerlo de esta manera:
Utilizando
export
La diferencia
export default
es que puede exportar algo y aplicar el nombre donde lo importa:fuente
Unexpected token
error al construirexport Foo from './Foo'; export Bar from './Bar'
export { default as Foo } from './Foo';
. Lo he visto en otros lugaresexport { default as Foo } from './Foo';
fue necesario para exportarlo.Espero que esto ayude:
fuente
La respuesta de @webdeb no funcionó para mí, encontré un
unexpected token
error al compilar ES6 con Babel, haciendo exportaciones predeterminadas con nombre.Esto funcionó para mí, sin embargo:
fuente
fuente
Para exportar las instancias de las clases, puede usar esta sintaxis:
fuente