2012-10-08 49 views
1

我試圖開發一個自定義發電機約曼使用CoffeeScript的但我面臨的一個問題。當我使用hookFor方法在我Generator類的構造函數,我得到一個警告hookFor必須構造內使用,當我嘗試初始化我用約曼項目,我的自定義生成器。這裏是我index.coffee發電機的代碼:約曼發電機的CoffeeScript - HookFor警告

path = require 'path' 
util = require 'util' 
yeoman = require '../../../../' 
module.exports = class Generator extends yeoman.generators.Base 
    constructor: -> 
     super() 
     @directories = ['controllers', 'helpers', 'models', 'templates', 'views'] 
     @hookFor 'artefact:controller', args: ['App'] 
    deploy: -> 
     @directory '.', '.' 
     @mkdir path.join 'dev', directory for directory in @directories 

任何幫助將不勝感激。謝謝。

回答

1

顯然,錯誤來自約曼發電機代碼在自耕農發電機/ lib目錄/ base.js文件。 這裏是我導致了這樣的結論:

  1. 警告是由可變_running設置爲truehookFor功能(線296)
  2. 此變量設置爲true run功能引起的(第78行)之後,迭代類Generator的方法(第81-137行)
  3. CoffeeScript中爲類Generator定義的構造函數在iterat離子,所以@hookFor被調用,而_runningtrue警告!
  4. 但是,構造函數不應該叫,因爲測試是在迭代期間進行,以防止它(92行)

    if (method.constructor === '-') 
    
  5. 然而,本次測試,在我看來,應該是:

    if (method === 'constructor') 
    

的黑客的伎倆。如果我錯了,隨意添加評論。