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