J'ai défini une classe dans un module:
"use strict";
var AspectTypeModule = function() {};
module.exports = AspectTypeModule;
var AspectType = class AspectType {
// ...
};
module.export.AspectType = AspectType;
Mais j'obtiens le message d'erreur suivant:
TypeError: Cannot set property 'AspectType' of undefined
at Object.<anonymous> (...\AspectType.js:30:26)
at Module._compile (module.js:434:26)
....
Comment exporter cette classe et l'utiliser dans un autre module? J'ai vu d'autres questions SO, mais j'obtiens d'autres messages d'erreur lorsque j'essaye de mettre en œuvre leurs solutions.
javascript
node.js
module
export
Jérôme Verstrynge
la source
la source
'use strict'
d'un module ou d'une classe; c'est le comportement par défaut. Réf. 10.2.1 Code de mode strictRéponses:
Si vous utilisez ES6 dans Node 4, vous ne pouvez pas utiliser la syntaxe du module ES6 sans transpilateur, mais les modules CommonJS (modules standard de Node) fonctionnent de la même manière.
devrait être
d'où le message d'erreur "Impossible de définir la propriété 'AspectType' sur undefined" car
module.export === undefined
.Aussi pour
pouvez-vous juste écrire
et obtenir essentiellement le même comportement.
la source
export
au lieu deexports
, comment ai-je raté ça?module.exports = ClassName
et ça marche bienla source
Avec ECMAScript 2015, vous pouvez exporter et importer plusieurs classes comme celle-ci
puis où vous les utilisez:
En cas de collision de noms, ou si vous préférez d'autres noms, vous pouvez les renommer comme ceci:
la source
Utilisation
Puis pour l'importer
Lisez http://babeljs.io/docs/learn-es2015/#modules pour plus de détails
la source
SyntaxError: Unexpected reserved word
, pouvez-vous fournir un exemple de code complet?module.exports
import
/export
(c'est toujours vrai, mai 2017).L'expression de classe peut être utilisée pour plus de simplicité.
-
la source
Je l'écris simplement de cette façon
dans le fichier AspectType:
et importez-le comme ceci:
la source
Plusieurs des autres réponses se rapprochent, mais honnêtement, je pense que vous feriez mieux d'utiliser la syntaxe la plus propre et la plus simple. Le PO a demandé un moyen d'exporter une classe dans ES6 / ES2015. Je ne pense pas que vous puissiez être plus propre que cela:
la source
J'ai eu le même problème. Ce que j'ai trouvé, c'est que j'ai appelé mon objet récepteur du même nom que le nom de la classe. exemple:
cela a foiré les choses de cette façon ... j'espère que cela aidera
la source
Parfois, j'ai besoin de déclarer plusieurs classes dans un fichier, ou je veux exporter des classes de base et conserver leurs noms exportés car mon éditeur JetBrains comprend mieux cela. J'utilise juste
Et ailleurs:
la source