Ich habe eine Klasse in einem Modul definiert:
"use strict";
var AspectTypeModule = function() {};
module.exports = AspectTypeModule;
var AspectType = class AspectType {
// ...
};
module.export.AspectType = AspectType;
Aber ich bekomme folgende Fehlermeldung:
TypeError: Cannot set property 'AspectType' of undefined
at Object.<anonymous> (...\AspectType.js:30:26)
at Module._compile (module.js:434:26)
....
Wie soll ich diese Klasse exportieren und in einem anderen Modul verwenden? Ich habe andere SO-Fragen gesehen, erhalte jedoch andere Fehlermeldungen, wenn ich versuche, deren Lösungen zu implementieren.
javascript
node.js
module
export
Jérôme Verstrynge
quelle
quelle
'use strict'
Modul oder keine Klasse. Es ist das Standardverhalten. Ref. 10.2.1 Strict Mode CodeAntworten:
Wenn Sie ES6 in Knoten 4 verwenden, können Sie die ES6-Modulsyntax nicht ohne Transpiler verwenden, aber CommonJS-Module (Standardmodule von Node) funktionieren genauso.
sollte sein
daher die Fehlermeldung "Eigenschaft 'AspectType' von undefined kann nicht festgelegt werden", weil
module.export === undefined
.Auch für
kannst du einfach schreiben
und erhalten im Wesentlichen das gleiche Verhalten.
quelle
export
stattexports
, wie habe ich das vermisst?module.exports = ClassName
und es funktioniert gutquelle
Mit ECMAScript 2015 können Sie mehrere Klassen wie diese exportieren und importieren
dann, wo Sie sie verwenden:
Bei Namenskollisionen oder wenn Sie andere Namen bevorzugen, können Sie diese wie folgt umbenennen:
quelle
Verwenden
Dann importieren
Weitere Informationen finden Sie unter http://babeljs.io/docs/learn-es2015/#modules
quelle
SyntaxError: Unexpected reserved word
, können Sie ein vollständiges Codebeispiel bereitstellen?module.exports
import
/export
(gilt nach wie vor, im Mai 2017).Der Klassenausdruck kann der Einfachheit halber verwendet werden.
- -
quelle
Ich schreibe es einfach so
in der AspectType-Datei:
und importiere es so:
quelle
Einige der anderen Antworten kommen nahe, aber ehrlich gesagt denke ich, dass Sie besser mit der saubersten und einfachsten Syntax arbeiten sollten. Das OP forderte ein Mittel zum Exportieren einer Klasse in ES6 / ES2015 an. Ich glaube nicht, dass Sie viel sauberer werden können:
quelle
Ich hatte das gleiche Problem. Was ich fand, war, dass ich mein empfangendes Objekt den gleichen Namen wie den Klassennamen nannte. Beispiel:
das hat die Dinge so vermasselt ... hoffe, das hilft
quelle
Manchmal muss ich mehrere Klassen in einer Datei deklarieren, oder ich möchte Basisklassen exportieren und ihre Namen exportieren lassen, da mein JetBrains-Editor dies besser versteht. Ich benutze nur
Und woanders:
quelle