Estou tentando criar um módulo que exporta várias classes ES6. Digamos que eu tenha a seguinte estrutura de diretórios:
my/
└── module/
├── Foo.js
├── Bar.js
└── index.js
Foo.js
e Bar.js
cada um exporta uma classe ES6 padrão:
// Foo.js
export default class Foo {
// class definition
}
// Bar.js
export default class Bar {
// class definition
}
Atualmente, tenho minha index.js
configuração assim:
import Foo from './Foo';
import Bar from './Bar';
export default {
Foo,
Bar,
}
No entanto, não consigo importar. Quero poder fazer isso, mas as classes não são encontradas:
import {Foo, Bar} from 'my/module';
Qual é a maneira correta de exportar várias classes em um módulo ES6?
javascript
module
export
ecmascript-6
babel
ambiente
fonte
fonte
export
sem o padrãodefault
exportação. Imagine se alguém tentasse fazerimport SomeClass from 'my/module'
. Isso importaria automaticamente odefault
módulo desse caminho. Se você tivesse várias exportações padrão para lá, como saberia qual importar?Respostas:
Tente isso no seu código:
Btw, você também pode fazê-lo desta maneira:
Usando
export
A diferença
export default
é que você pode exportar algo e aplicar o nome para onde o importa:fonte
Unexpected token
erro ao construirexport Foo from './Foo'; export Bar from './Bar'
export { default as Foo } from './Foo';
. Já vi isso em outros lugaresexport { default as Foo } from './Foo';
era necessário para realmente exportá-lo.Espero que isto ajude:
fonte
A resposta do @ webdeb não funcionou para mim. Ocorreu um
unexpected token
erro ao compilar o ES6 com o Babel, fazendo exportações padrão nomeadas.Isso funcionou para mim, no entanto:
fonte
fonte
Para exportar as instâncias das classes, você pode usar esta sintaxe:
fonte