Definí una clase en un módulo:
"use strict";
var AspectTypeModule = function() {};
module.exports = AspectTypeModule;
var AspectType = class AspectType {
// ...
};
module.export.AspectType = AspectType;
Pero recibo el siguiente mensaje de error:
TypeError: Cannot set property 'AspectType' of undefined
at Object.<anonymous> (...\AspectType.js:30:26)
at Module._compile (module.js:434:26)
....
¿Cómo debo exportar esta clase y usarla en otro módulo? He visto otras preguntas SO, pero recibo otros mensajes de error cuando trato de implementar sus soluciones.
javascript
node.js
module
export
Jérôme Verstrynge
fuente
fuente
'use strict'
en un módulo o clase; es el comportamiento predeterminado. Árbitro. 10.2.1 Código de modo estrictoRespuestas:
Si está utilizando ES6 en el Nodo 4, no puede utilizar la sintaxis del módulo ES6 sin un transpilador, pero los módulos CommonJS (módulos estándar de Nodo) funcionan igual.
debiera ser
de ahí el mensaje de error "No se puede establecer la propiedad 'AspectType' de indefinido" porque
module.export === undefined
.También por
puedes escribir
y obtienen esencialmente el mismo comportamiento.
fuente
export
lugar deexports
, ¿cómo me perdí eso?module.exports = ClassName
y funciona bienfuente
Con ECMAScript 2015 puede exportar e importar varias clases como esta
entonces donde los usas:
En caso de colisiones de nombres, o si prefiere otros nombres, puede cambiarles el nombre de esta manera:
fuente
Utilizar
Luego para importarlo
Lea http://babeljs.io/docs/learn-es2015/#modules para obtener más detalles
fuente
SyntaxError: Unexpected reserved word
, ¿puede proporcionar un ejemplo de código completo?module.exports
import
/export
(todavía es válido, mayo de 2017).La expresión de clase se puede utilizar para simplificar.
-
fuente
Simplemente lo escribo de esta manera
en el archivo AspectType:
e importarlo así:
fuente
Varias de las otras respuestas se acercan, pero honestamente, creo que es mejor optar por la sintaxis más limpia y simple. El OP solicitó un medio para exportar una clase en ES6 / ES2015. No creo que puedas ser mucho más limpio que esto:
fuente
Yo tuve el mismo problema. Lo que encontré fue que llamé a mi objeto receptor con el mismo nombre que el nombre de la clase. ejemplo:
esto arruinó las cosas de esa manera ... espero que esto ayude
fuente
A veces necesito declarar varias clases en un archivo, o quiero exportar clases base y mantener sus nombres exportados porque mi editor de JetBrains lo entiende mejor. Yo solo uso
Y en otro lugar:
fuente