2016-07-06 2 views
1

Я ловлю вокруг с yoman и хочу написать свой первый генератор для простого шаблона html5. Моя проблема в том, что две функции в моем генераторе работают хорошо самостоятельно, но не вместе, и я не знаю, почему. Я проверил некоторые генераторы с страницы йомен, но я не вижу, что делаю неправильно. Я надеюсь, что вы можете мне помочь. Это мой код:Функция yoman copy не работает после запроса

'use strict'; 
var generators = require('yeoman-generator'); 
var yosay = require('yosay'); 

module.exports = generators.Base.extend({ 

    initializing: function(){ 
    this.log(yosay("\'Allo \'allo I will create your HTML5 Boilerplate...")); 
    }, 

    prompting: function() { 
    var done = this.async(); 
    this.prompt({ 
     type: 'input', 
     name: 'name', 
     message: 'Your project name', 
     //Defaults to the project's folder name if the input is skipped 
     default: this.appname 
    }, function(answers) { 

     this.props = answers 
     this.log(answers.name); 
     done(); 
    }.bind(this)); 
    }, 

    writing: function(){ 
    this.fs.copyTpl(
     this.templatePath('_page/_index.html'), 
     this.destinationPath('index.html'), 
     { title: "answers.name" } 
    ); 
    }, 
}); 

Заранее благодарен!

ответ

1

Попробуйте использовать версию Promises функции подсказки, как показано на странице yeoman.io.

Пример:

prompting: function() { 
    return this.prompt({ 
     type: 'input', 
     name: 'name', 
     message: 'Your project name', 
     //Defaults to the project's folder name if the input is skipped 
     default: this.appname 
    }).then(function(answers) { 
     this.props = answers 
     this.log(answers.name); 
    }.bind(this)); 
    }, 

Изменения:

  1. return добавить перед тем this.prompt().

  2. изменение this.prompt(prompts, callback); в this.prompt(prompts).then(callback);

+0

Спасибо, но это не работает :-(... консоль выдает ошибку "Object [Объект Объект] не имеет методы 'то'" ... я Я пытаюсь обновить генератор йома, но ошибка остается. Я не так много привык к обещаниям, но почему другие генераторы работают, которые не используют обещания? – sonnenpriester

+0

Старый синтаксис, без обещаний, все еще работает - он просто может быть более ненадежным, чем новый метод. Чтобы лучше понять, что происходит, вы можете попытаться выполнить регистрацию 'this' в консоли - это должно относиться ко всему объекту генератора. Если это не так, это, вероятно, источниквашей проблемы. – Deimyts