Eu defini uma classe em um módulo:
"use strict";
var AspectTypeModule = function() {};
module.exports = AspectTypeModule;
var AspectType = class AspectType {
// ...
};
module.export.AspectType = AspectType;
Mas recebo a seguinte mensagem de erro:
TypeError: Cannot set property 'AspectType' of undefined
at Object.<anonymous> (...\AspectType.js:30:26)
at Module._compile (module.js:434:26)
....
Como devo exportar esta classe e usá-la em outro módulo? Já vi outras perguntas do SO, mas recebo outras mensagens de erro quando tento implementar suas soluções.
javascript
node.js
module
export
Jérôme Verstrynge
fonte
fonte
'use strict'
de um módulo ou classe; é o comportamento padrão. Ref. 10.2.1 Código de modo estritoRespostas:
Se você estiver usando ES6 no Nó 4, não poderá usar a sintaxe do módulo ES6 sem um transpiler, mas os módulos CommonJS (módulos padrão do Node) funcionam da mesma forma.
deveria estar
portanto, a mensagem de erro "Não é possível definir propriedade 'AspectType' de indefinido" porque
module.export === undefined
.Também para
você pode apenas escrever
e obter essencialmente o mesmo comportamento.
fonte
export
vez deexports
, como eu perdi isso?module.exports = ClassName
e funciona bemfonte
Com ECMAScript 2015 você pode exportar e importar várias classes como esta
então onde você os usa:
Em caso de conflito de nomes, ou se preferir outros nomes, você pode renomeá-los assim:
fonte
Usar
Então, para importá-lo
Leia http://babeljs.io/docs/learn-es2015/#modules para mais detalhes
fonte
SyntaxError: Unexpected reserved word
, você pode fornecer um exemplo de código completo?module.exports
import
/export
(ainda é válido, maio de 2017).expressão de classe pode ser usada para simplicidade.
-
fonte
Eu simplesmente escrevo assim
no arquivo AspectType:
e importe assim:
fonte
Várias das outras respostas chegam perto, mas, honestamente, acho melhor você escolher a sintaxe mais limpa e simples. O OP solicitou um meio de exportar uma classe no ES6 / ES2015. Eu não acho que você pode ficar muito mais limpo do que isso:
fonte
Eu tive o mesmo problema. O que descobri foi que chamei meu objeto receptor com o mesmo nome da classe. exemplo:
isso estragou as coisas dessa maneira ... espero que isso ajude
fonte
Às vezes, preciso declarar várias classes em um arquivo ou desejo exportar classes básicas e manter seus nomes exportados porque meu editor JetBrains entende isso melhor. Eu só uso
E em outro lugar:
fonte