Gulp与browserify静默失败

时间:2018-11-30 14:15:19

标签: javascript angularjs gulp browserify

我有一个使用Angular.js的项目,很久以前我为此创建了一些gulp任务。我最近有一台新计算机,并试图运行它,但是在我的browserify任务上它默默地失败了(日志中没有错误)。

gulp.task('imgs', ['html'], function () {
    return gulp.src(paths.img + '*')
        .pipe(gulp.dest(paths.dist_img));
});

gulp.task('browserify', ['imgs'], function () {
    return browserify(paths.src + 'index.js', {debug: true})
        .bundle()
        .pipe(source('index.js'))
        .pipe(gulpPlugins.rename('bundle.js'))
        .pipe(gulp.dest(paths.dist))
        .pipe(gulpPlugins.connect.reload());
});

gulp.task('copy-bootstrap-css', ['browserify'], function () {
    return gulp.src(paths.custom + "bootstrap/css/*.css")
         .pipe(gulp.dest(paths.dist_css));
});

我已经调试了一段时间,当我注释掉browserify任务的重命名管道或dest管道时,它并没有失败。显然,当我这样做时,该应用程序无法正常工作。但是我找不到真正的原因。

最终,我在绝望中最终为browserify输出创建了一个单独的变量,然后应用管道:

gulp.task('browserify', ['imgs'], function () {
    var b = browserify(paths.src + 'index.js', {debug: true})
        .bundle();
    b.pipe(source('index.js'))
        .pipe(gulpPlugins.rename('bundle.js'))
        .pipe(gulp.dest(paths.dist))
        .pipe(gulpPlugins.connect.reload())
    return b;
});

足以“修复”它。这意味着gulp任务至少可以完全执行。我猜browserify仍然无法正常运行,因为我在bundle.js的浏览器中收到“输入意外结束”的信息,但这可能也是另一个问题。

当我为browserify.bundle()使用单独的变量时,有人知道为什么这是“有效的”吗? 知道剩下的问题是否相关吗?

因为这可能与版本有关:我的package.json中包含以下gulpPl​​ugins,并且在新计算机上运行npm 6.4.1和node 11.3.0。

"devDependencies": {
    "browserify": "^13.1.1",
    "chai": "^3.5.0",
    "gulp": "^3.9.1",
    "gulp-angular-templatecache": "^2.0.0",
    "gulp-buffer": "0.0.2",
    "gulp-clean": "^0.3.2",
    "gulp-connect": "^5.0.0",
    "gulp-dest": "^0.2.3",
    "gulp-inject": "^4.2.0",
    "gulp-load-plugins": "^1.4.0",
    "gulp-rename": "^1.4.0",
    "gulp-rev-all": "^0.9.7",
    "gulp-rev-replace": "^0.4.3",
    "gulp-sass": "^3.1.0",
    "gulp-streamify": "^1.0.2",
    "gulp-util": "^3.0.7",
    "http-proxy-middleware": "^0.17.4",
    "mocha": "^3.2.0",
    "vinyl-source-stream": "^1.1.0"
}

编辑: 当我手动浏览器索引index.js文件时,该文件可以正常工作,并且输出的文件为64k行的庞大文件,而我的gulp任务中的文件只有1200行。

1 个答案:

答案 0 :(得分:1)

我重组了browserify-task并删除了重命名,因为乙烯基源流中的filename参数已经在进行重命名了,所以我并不需要它:

gulp.task('browserify', ['imgs'], function () {
    var b = browserify();
    b.add(paths.src + 'index.js', {debug: true});
    var textStream = b.bundle();
    textStream
        .pipe(source('bundle.js'))
        .pipe(gulp.dest(paths.dist))
        .pipe(gulpPlugins.connect.reload())
    return b;
});

请注意,仅删除重命名管道并更改源管道的文件名并不能解决问题。由于某种原因导致“没有这样的文件或目录”错误。我想这就是为什么我首先添加重命名管道的原因。