[英]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.