Я определил класс в модуле:
"use strict";
var AspectTypeModule = function() {};
module.exports = AspectTypeModule;
var AspectType = class AspectType {
// ...
};
module.export.AspectType = AspectType;
Но я получаю следующее сообщение об ошибке:
TypeError: Cannot set property 'AspectType' of undefined
at Object.<anonymous> (...\AspectType.js:30:26)
at Module._compile (module.js:434:26)
....
Как мне экспортировать этот класс и использовать его в другом модуле? Я видел другие вопросы SO, но я получаю другие сообщения об ошибках, когда пытаюсь реализовать их решения.
javascript
node.js
module
export
Жером Верстринж
источник
источник
'use strict'
модуль или класс; это поведение по умолчанию. Ссылка 10.2.1 Код строгого режимаОтветы:
Если вы используете ES6 в Node 4, вы не можете использовать синтаксис модуля ES6 без транспилятора, но модули CommonJS (стандартные модули Node) работают так же.
должно быть
следовательно, сообщение об ошибке «Невозможно установить свойство AspectType на undefined», потому что
module.export === undefined
.Также для
можешь просто написать
и получите практически такое же поведение.
источник
export
вместо тогоexports
, как я это пропустил?module.exports = ClassName
и работает нормальноисточник
С ECMAScript 2015 вы можете экспортировать и импортировать несколько классов, подобных этому
тогда где вы их используете:
В случае конфликта имен или если вы предпочитаете другие имена, вы можете переименовать их следующим образом:
источник
Использовать
Затем импортировать его
Прочтите http://babeljs.io/docs/learn-es2015/#modules для получения более подробной информации.
источник
SyntaxError: Unexpected reserved word
, вы можете предоставить полный пример кода?module.exports
import
/export
(все еще актуально, май 2017 г.).выражение класса можно использовать для простоты.
-
источник
Я просто так пишу
в файле AspectType:
и импортируйте его так:
источник
Некоторые другие ответы близки, но, честно говоря, я думаю, что вам лучше использовать самый чистый и простой синтаксис. OP запросил средство экспорта класса в ES6 / ES2015. Я не думаю, что вы можете стать намного чище, чем это:
источник
У меня такая же проблема. Я обнаружил, что я назвал полученный объект тем же именем, что и имя класса. пример:
это напортачило ... надеюсь, это поможет
источник
Иногда мне нужно объявить несколько классов в одном файле или я хочу экспортировать базовые классы и сохранить их имена экспортированными, потому что мой редактор JetBrains лучше это понимает. Я просто использую
И еще где-то:
источник