Zdefiniowałem klasę w module:
"use strict";
var AspectTypeModule = function() {};
module.exports = AspectTypeModule;
var AspectType = class AspectType {
// ...
};
module.export.AspectType = AspectType;
Ale pojawia się następujący komunikat o błędzie:
TypeError: Cannot set property 'AspectType' of undefined
at Object.<anonymous> (...\AspectType.js:30:26)
at Module._compile (module.js:434:26)
....
Jak mam wyeksportować tę klasę i użyć jej w innym module? Widziałem inne pytania SO, ale otrzymuję inne komunikaty o błędach, gdy próbuję wdrożyć ich rozwiązania.
javascript
node.js
module
export
Jérôme Verstrynge
źródło
źródło
'use strict'
modułu ani klasy; jest to zachowanie domyślne. Nr ref. 10.2.1 Kod trybu ścisłegoOdpowiedzi:
Jeśli używasz ES6 w węźle 4, nie możesz używać składni modułu ES6 bez transpilera, ale moduły CommonJS (standardowe moduły węzła) działają tak samo.
Powinien być
stąd komunikat o błędzie „Nie można ustawić właściwości„ AspectType ”na wartość undefined”, ponieważ
module.export === undefined
.Także dla
możesz po prostu napisać
i uzyskaj zasadniczo takie samo zachowanie.
źródło
export
zamiastexports
, jak mogłem to przegapić?module.exports = ClassName
i działa dobrzeźródło
Dzięki ECMAScript 2015 możesz eksportować i importować wiele takich klas
wtedy gdzie ich używasz:
W przypadku kolizji nazw lub jeśli wolisz inne nazwy, możesz je zmienić w następujący sposób:
źródło
Posługiwać się
Następnie, aby go zaimportować
Przeczytaj http://babeljs.io/docs/learn-es2015/#modules, aby uzyskać więcej informacji
źródło
SyntaxError: Unexpected reserved word
, czy możesz podać przykład pełnego kodu?module.exports
import
/export
(nadal obowiązuje, maj 2017).dla uproszczenia można użyć wyrażenia class .
-
źródło
Po prostu piszę to w ten sposób
w pliku AspectType:
i zaimportuj w ten sposób:
źródło
Kilka innych odpowiedzi jest bliskich, ale szczerze mówiąc, myślę, że lepiej będzie wybrać najczystszą, najprostszą składnię. OP zażądał środków do eksportu klasy w ES6 / ES2015. Nie sądzę, aby można było uzyskać znacznie czystsze niż to:
źródło
Miałem ten sam problem. Odkryłem, że nazwałem obiekt odbierający taką samą nazwą jak nazwa klasy. przykład:
to schrzaniło sprawę w ten sposób ... mam nadzieję, że to pomoże
źródło
Czasami muszę zadeklarować wiele klas w jednym pliku lub chcę wyeksportować klasy podstawowe i zachować ich nazwy wyeksportowane, ponieważ mój edytor JetBrains lepiej to rozumie. Po prostu używam
I gdzie indziej:
źródło