gulp-shell throw错误:使用pg_dump时写EPIPE

时间:2015-05-06 01:24:48

标签: postgresql npm gulp

我使用gulp-shell执行pg_dump命令来创建postgres数据库的简单转储。命令gulp postgres-dump将成功创建转储,但有时在输入密码并挂起一段时间后会抛出以下错误。

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: write EPIPE
    at exports._errnoException (util.js:746:11)
    at WriteWrap.afterWrite (net.js:775:14)

这是我的(简体)gulpfile.js

var gulp                = require('gulp'),
    plugins             = require('gulp-load-plugins')();

    plugins.shell       = require('gulp-shell');

var dbDumpPath = 'db_dumps/';

/**
 * Create postgres dump of the database
 */
gulp.task('postgres-dump', function() {
    return gulp.src('*.js', {read: false})
           .pipe(plugins.shell([
                'pg_dump database_name > ' + dbDumpPath +'database_bak.sql -h example.com -U databaseuser'
            ]));
});

我可以在命令行中运行pg_dump命令而不会出现问题。为了清楚起见,即使有时会发生错误,也会发生数据库转储。

我如何纠正此错误?

1 个答案:

答案 0 :(得分:1)

再次阅读gulp-shell docs,我决定尝试速记版本。最终工作并没有抛出任何错误。

gulp.task('postgres-dump', plugins.shell.task([
  'pg_dump database_name > ' + dbDumpPath +'database_bak.sql -h example.com -U databaseuser'
]));