node multiple functions exports example dollars convert coin node.js coffeescript

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''