2012-09-07 25 views
19

Basit bir örnek üzerinde çalışıyorum; Javascript ile çalışmasını sağlayabilirim ancak CoffeeScript sürümümde bir sorun var. Ben index.coffee çalıştırın ve konsol çıktısını görmek için bekliyorumNode.js module.exports in CoffeeScript

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

"Adım Emma": İşte

person.coffee geçerli:

module.exports = Person 

class Person 
    constructor: (@name) -> 

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

Ve burada index.coffee olduğunu . Bunun yerine, TypeError: undefined komutunu kullanarak bir hata alıyorum.

cevap

26

Alt kısımda module.exports satırını koyun.

---- person.coffee ----


Person = require "./person" // [Function: Person] 
p = new Person "Emma" // { name: 'Emma' } 

üst kısımda module.exports atamak

class Person 
    constructor: (@name) -> 

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

module.exports = Person 
, Person değişken hala undefined olduğunu.

+0

That's it! Çok teşekkürler. –

+0

fyi: neden javascript modülleri – froginvasion

15

Ayrıca person.coffee yazabilen:

{Person} = require './person' 
+0

yapmak için geleneksel desen bakmak için yararlı olabilir anlamak için çalıştı ve nesne 'bir işlev değil' hata almaya devam etti. – majidarif

+0

@majidarif Mantıklı olduğunu kontrol etmek için derlenmiş kodunuza bakın. Bir Node.js ortamında mı yoksa tarayıcınızda mı çalışıyorsunuz? – vaughan

+0

Aslında Node.js üzerinde çalışıyorum, 1 dosya üzerinde 2 sınıfım var ve bu sınıfın birini ve birini genişleten 2 sınıf var. O zaman altkümeyi ihraç etmek için ihtiyaç duyduğum şey. – majidarif

5

Ayrıca index.coffee ya

sonra

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

yazabiliriz:

class @Person 

Ardından index.coffee şu satırlar

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

veya bu şekilde burada

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

çeşitli cevaplar yapabileceği modülü tarafından ihraç yalnızca bir nesne sınıfı ("düşünme Java yolu" tipte olduğu hafife almak gibi görünüyor)

Eğer birkaç nesne vb (sınıflar, fonksiyonlar,) dışa aktarmanız gerekiyorsa, muhtemelen yazmak için en iyi şekilde olmalıdır:

exports.Person = class Person 
    [...] 


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