首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >吞咽-翡翠与吞咽数据

吞咽-翡翠与吞咽数据
EN

Stack Overflow用户
提问于 2014-12-05 09:53:09
回答 1查看 6.6K关注 0票数 2

我试图在我的工作流程中使用吞咽数据,但是我得到了一个与吞咽数据插件相关的错误。

这是我的gulpfile.js

代码语言:javascript
复制
var gulp = require('gulp'),
  plumber = require('gulp-plumber'),
  browserSync = require('browser-sync'),
  jade = require('gulp-jade'),
  data = require('gulp-data'),
  path = require('path'),
  sass = require('gulp-ruby-sass'),
  prefix = require('gulp-autoprefixer'),
  concat = require('gulp-concat'),
  uglify = require('gulp-uglify'),
  process = require('child_process');

  gulp.task('default', ['browser-sync', 'watch']);

  // Watch task
  gulp.task('watch', function() {
    gulp.watch('*.jade', ['jade']);
    gulp.watch('public/css/**/*.scss', ['sass']);
    gulp.watch('public/js/*.js', ['js']);
  });

  var getJsonData = function(file, cb) {
    var jsonPath = './data/' + path.basename(file.path) + '.json';
    cb(require(jsonPath))
  };

  // Jade task
  gulp.task('jade', function() {
    return gulp.src('*.jade')
    .pipe(plumber())
    .pipe(data(getJsonData))
    .pipe(jade({
      pretty: true
    }))
    .pipe(gulp.dest('Build/'))
    .pipe(browserSync.reload({stream:true}));
  });

  ...

  // Browser-sync task
  gulp.task('browser-sync', ['jade', 'sass', 'js'], function() {
    return browserSync.init(null, {
    server: {
      baseDir: 'Build'
    }
  });
});

这是一个基本的json文件,名为index.jade.json

代码语言:javascript
复制
{
  "title": "This is my website"
}

我得到的错误是:

代码语言:javascript
复制
Error in plugin 'gulp-data'
[object Object]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-05 10:59:45

您正在收到错误,因为在getJsonData中,您将所需的数据作为第一个参数传递给回调。这是为可能的错误保留的。

在您的例子中,不需要回调。看一看gulp数据使用示例,这应该是可行的:

代码语言:javascript
复制
.pipe(data(function(file) {
  return require('./data/' + path.basename(file.path) + '.json');
}))

完整的例子:

代码语言:javascript
复制
var gulp = require('gulp');
var jade = require('gulp-jade');
var data = require('gulp-data');
var path = require('path');
var fs   = require('fs');

gulp.task('jade', function() {
  return gulp.src('*.jade')
    .pipe(data(function(file) {
      return require('./data/' + path.basename(file.path) + '.json');
    }))
    .pipe(jade({ pretty: true }))
    .pipe(gulp.dest('build/'));
});

如果您正在gulp.watch上运行该任务,请使用此方法

代码语言:javascript
复制
.pipe(data(function(file) {
  return JSON.parse(fs.readFileSync('./data/' + path.basename(file.path) + '.json'));
}))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27313107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档