Ворчание не определено по умолчанию не найдено

Я хочу создать генератор yoeman для проекта шаблона html, когда я пытаюсь запустить grunt у меня есть эта ошибка Задача 'по умолчанию не найдена grunt build build grunt не определен

$> grunt
Loading "Gruntfile.js" tasks...ERROR
>> ReferenceError: grunt is not defined
Warning: Task "default" not found. Use --force to continue.
Aborted due to warnings.

Вот мой код

var fs = require('fs');
var path = require('path');
var showdown = require('showdown');
var EJS = require('ejs');
var TemplateRender = function(file, destination, source, template) {
this.file = file;
this.destination = destination;
this.source = source;
this.template = template;
this.grunt = grunt;
};

TemplateRender.prototype = {
render: function() {
var file    = this._read();
var html    = this._convert(file);
var content = this._template(html);
              this._write(content);
},
_read: function() {
var filepath = path.join(this.source,this.file);
grunt.file.read(filepath);
},
_convert: function(file) {
return new showdown.convertor().makeHtml(file);
},
_template: function(html) {
    var template = this.grunt.file.read(this.template);
    return EJS.render(template,{content:html});
 },
_write: function() {
this.grunt.file.write(
  path.join(this.destination, this.file),
  page
  );
  }

  };
'use strict';
module.exports = function(grunt) {

  grunt.registerTask('build', function() {
    var template = "app/index.ejs",
    destination = path.join(process.cwd(),"dist"),
    source = path.join(process.cwd(),"posts"),
    files = fs.readdirSync(source);

  files.forEach(function(file) {
    new TemplateRender(file, destination, source, template, grunt).render();
    read();
    convert();
    template();
    write();


  });

  });

  };

Мне нужно знать, как обнаружить ошибку в хрюканье и йомен

1 ответ

В верхней части вашего кода, в TemplateRender функция, у вас есть эта строка: this.grunt = grunt; Но на самом деле у вас нет аргумента с таким именем. Попробуй это:

// ... (everything the same above here)

// *** Notice the new argument to this constructor function
var TemplateRender = function(file, destination, source, template, grunt) {
  this.file = file;
  this.destination = destination;
  this.source = source;
  this.template = template;
  this.grunt = grunt;
};

TemplateRender.prototype = {
  // ...
  _read: function() {
    var filepath = path.join(this.source,this.file);

    // *** probably needs to be `this.grunt` ?
    this.grunt.file.read(filepath);
  },

  // ...
};

module.exports = function(grunt) {
  grunt.registerTask('build', function() {
    // ... (mostly the same)

    files.forEach(function(file) {
      new TemplateRender(file, destination, source, template, grunt).render();

      // *** where are these defined? Should they be: this._read(), etc?
      this._read();
      this._convert();
      this._template();
      this._write();
    });

  });

};
Другие вопросы по тегам