CoffeeScript中的Node.js module.exports

时间:2012-09-07 00:02:37

标签: node.js coffeescript

我正在研究一个简单的例子;我可以使用Javascript,但我的CoffeeScript版本有问题。

这是person.coffee:

module.exports = Person

class Person 
    constructor: (@name) ->

    talk: ->
        console.log "My name is #{@name}"

这是index.coffee:

Person = require "./person"
emma = new Person "Emma"
emma.talk()

我希望运行index.coffee并看到控制台输出“我的名字是Emma”。相反,我收到的错误是TypeError:undefined in not a function。

4 个答案:

答案 0 :(得分:27)

module.exports行放在底部。

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

当您在顶部指定module.exports时,Person变量仍为undefined

答案 1 :(得分:15)

你也可以写person.coffee

class @Person

然后在index.coffee中使用以下内容:

{Person} = require './person'

答案 2 :(得分:5)

你也可以写

module.exports = class Person
  constructor: (@name) ->
    console.log "#{@name} is a person"   

然后在index.coffee

bob = new require './person' 'Bob'

或者你可以这样做

Person = require './person'
bob = new Person 'bob'

答案 3 :(得分:2)

这里的各种答案似乎理所当然地认为模块导出的唯一一个对象是类(“Java思维方式”)

如果你需要导出几个对象(类,函数等),最好写一下:

exports.Person = class Person
    [...]


coffee> { Person } = require "./person"
coffee> p = new Person "Emma"