コードを少し整理しようとしていますが、未定義のスーパークラスに問題があります。単なるロード パスの問題であることを願っていますが、わかりません。私はこれを実行しています:
coffee rooms.coffee
ルームズコーヒー
Room = require('./rooms/room')
module.exports = class Rooms extends Object
constructor: ->
@
部屋/部屋.コーヒー
module.exports = class Room
@Active: require('./active')
constructor: (@id) ->
@users = {}
部屋/アクティブ.コーヒー
Room = require('./room')
console.log Room #=> {}
module.exports = class Active extends Room
constructor: (@id) ->
@type = "Active"
super
やろうとするとnew Active
、次のエラーが発生します。
TypeError: Cannot read property 'constructor' of undefined
Active
は次のsuper
ようにリストされていundefined
ます。
[Function: Active] __super__: undefined
なぜRoom
未定義?(というか、単なる空のオブジェクト?)
アップデート
これは、以下の多くの人々が指摘しているように、循環依存が原因でした。サブクラスの定義を別のファイルに保持しようとするのではなく、基本クラスの定義のすぐ内側に配置することになりました。このようなもの:
class Room
constructor: ->
# ...
class @Active extends Room
constructor: ->
# ...
class @Inactive extends Room
constructor: ->
# ...
active = new Room.Active
inactive = new Room.Inactive