簡體   English   中英

有多個導出的Node.js + Coffeescript類繼承?

[英]Node.js + Coffeescript Class Inheritance with multiple exports?

在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

好吧,可以這樣做(順序很重要):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM