【问题标题】:Node.js + Coffeescript Class Inheritance with multiple exports?具有多个导出的 Node.js + Coffeescript 类继承?
【发布时间】:2013-12-04 00:33:04
【问题描述】:

在 Node.js 和 Coffeescript 中,我定义了一个类 Connector,它继承自 Node 的 EventEmitter

我想定义Connector 的一个子类,称为Foo。当我尝试定义Foo 的新实例时,我收到:TypeError: Cannot read property 'prototype' of undefined

我认为这是因为我没有在我的module.exports 中导出Connector 类,但是我怎样才能既导出我的_.tap() 函数,又使Connector 类可用于其他类作为要扩展的父类?

# connectors.coffee
{ EventEmitter } = require 'events'
FS               = require 'fs'
Q                = require 'q'
_                = require 'underscore'
logger           = require './logger'

class Connector extends EventEmitter
  constructor: (@credential) ->

  name : 'Unnamed Connector'
  group: undefined

  search: (query) ->
    @_search(query)
    this

  _results: (results) ->
    @emit 'results', results

  _end: ->
    @emit 'end'

  _error: (error) ->
    @emit 'error', error

  module.exports = _.tap {}, (connectors) ->
    FS.readdirSync("#{__dirname}/connectors").forEach (file) ->
      # some logic


# foo.coffee
Connector = require '../connectors'
logger    = require '../logger'

class Foo extends Connector
  constructor: ->

  name: "test_connector"

  _search: (query) ->
    logger.info "Foo connector queried: #{query}"
    logger.info "Returning fake results, stand by"

module.exports = Foo

【问题讨论】:

    标签: javascript node.js inheritance coffeescript


    【解决方案1】:

    可以这样(顺序很重要):

    module.exports = _.tap {}, (connectors) ->
      #
      # your logic here
      #
    
    module.exports.Connector = Connector
    
    #i_use_tap.coffee
    tapFunctionResult = require('../connectors')
    
    #foo.coffee
    Connector = require('../connectors').Connector
    class Foo extends Connector
    

    【讨论】:

      猜你喜欢
      • 2011-06-04
      • 1970-01-01
      • 2013-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多