Estoy escribiendo una "clase" en el nodo.
// mymodule/index.js function MyClass() {} MyClass.prototype.method1 = function() {..}normalmente lo hago
module.exports = MyClasspero quiero que mi clase esté disponible para ambas sintaxis
var MyClass = require('mymodule')y
import {MyClass} from 'mymodule'¿Cuál es la forma correcta de hacerlo?
En cuanto a escribir una exportación que sea compatible con ES5 y ES6, Babel ya se encarga de eso por usted. (Como se comunica en los comentarios a su pregunta. Solo estoy aclarando para aquellos que se perdieron en el diálogo).
module.exports = MyClass funcionará con var MyClass = require('mymodule') e import MyClass from 'mymodule
Sin embargo, para ser claros, la sintaxis real sobre la que preguntó:
import {MyClass} from 'mymodule'significa algo diferente a
import MyClass from 'mymodule' Para este último, tendría que exportarlo como: module.exports.MyClass = MyClass , y para los módulos ES5 tendría que ser requerido como var MyClass = require('mymodule').MyClass
Ambas formas son correctas, pero intente importar en es6 así sin los corchetes:
import MyClass from 'mymodule'De lo contrario, tendría que exportar su función de esta manera:
module.exports.MyClass = MyClassy luego importarlo así:
import { MyClass } from 'mymodule'Por los comentarios, entiendo que está intentando ejecutar su código de interfaz ES6 en algunas pruebas de unidades mocha en node. Sí, no puede hacer eso hasta que el nodo admita módulos ES6. Si yo fuera usted, usaría systemjs para cargar el código para esas pruebas de mocha. Mocha admite promesas, por lo que debería ser bastante sencillo cargar cualquier archivo antes de las pruebas.
Escribir sintaxis para ambos solo creará más problemas para usted.