node.js - multiple - module.exports vs exports
Node.js module.exports en CoffeeScript (4)
Las diversas respuestas aquí parecen dar por sentado que el único objeto exportado por el módulo es la clase (tipo de "forma de pensar Java")
Si necesita exportar varios objetos (clases, funciones, etc.), probablemente debería ser mejor escribir:
exports.Person = class Person
[...]
coffee> { Person } = require "./person"
coffee> p = new Person "Emma"
Estoy trabajando en un ejemplo simple; Puedo hacer que funcione con Javascript, pero hay algo mal con mi versión de CoffeeScript.
Aquí está person.coffee:
module.exports = Person
class Person
constructor: (@name) ->
talk: ->
console.log "My name is #{@name}"
Y aquí está index.coffee:
Person = require "./person"
emma = new Person "Emma"
emma.talk()
Estoy esperando ejecutar index.coffee y ver la salida de la consola "Mi nombre es Emma". En su lugar, me aparece un error que dice TypeError: undefined en no una función.
Ponga la línea module.exports en la parte inferior.
---- person.coffee ----
class Person
constructor: (@name) ->
talk: ->
console.log "My name is #{@name}"
module.exports = Person
Person = require "./person" // [Function: Person]
p = new Person "Emma" // { name: ''Emma'' }
Cuando asigna a module.exports en la parte superior, la variable Person aún undefined está undefined .
También puedes escribir en person.coffee .
class @Person
Luego usa lo siguiente en index.coffee :
{Person} = require ''./person''
Tambien podrias escribir
module.exports = class Person
constructor: (@name) ->
console.log "#{@name} is a person"
entonces en index.coffee tampoco
bob = new require ''./person'' ''Bob''
o podrías hacerlo de esta manera
Person = require ''./person''
bob = new Person ''bob''