【问题标题】:How do I throw a custom error message in Gulp if variable is undefined如果变量未定义,如何在 Gulp 中抛出自定义错误消息
【发布时间】:2018-01-08 12:51:19
【问题描述】:

我有一个 gulp 任务。如果缺少文件(foobar.json),我希望它抛出自定义错误消息。

例子:

var gulp = require('gulp');
var plumber = require('gulp-plumber');
var notify = require("gulp-notify");
var foobar = './foobar.json';

gulp.task('my-task'), function() {
  if (typeof foobar === 'undefined') {
    console.log('foobar.json file is required to run my-task. Blau Blau Blau.');
  }
  else {
    something.init();
  }
});

当然,console.log 不起作用。我该怎么做?

请不要标记为重复。毫无疑问,专门处理检查文件和抛出简单消息的这个简单问题。我能找到的所有问题都比这个简单的问题复杂得多。

【问题讨论】:

  • 我在谷歌上搜索“Gulp 自定义错误消息”时得到的第一件事是:stackoverflow.com/questions/29734769/…
  • 是的,我看到了那个。但它需要 gulpUtil。文章说“这篇文章很旧,可能已经过时了”。
  • 我建议你这样做,因为 gulp-util 包实际上会处理很多错误消息实用程序,如堆栈跟踪等。此外,我会说@Hitmands 解决方案是正确的,你需要 fs 模块从磁盘读取。

标签: node.js gulp


【解决方案1】:

这无需额外的模块即可工作:

var gulp = require('gulp');
var foobar = './foobar.json';

gulp.task('my-task'), function() {
  if (foobar.length) {
    console.log('A foobar.json file is required to run my-task. Blau Blau Blau.');
  }
  else {
    something.init();
  }
});

【讨论】:

  • 我不知道这是否只是一个示例,但是,您的 sn-p 中的 if 语句是一个常量表达式,并且将始终为 true
  • IF 正在检查是否不检查变量是否存在。它正在检查它是否有长度。如果文件不存在,则返回 false。如果文件在那里,它有长度并且确实返回 true。
  • 请仔细查看您的脚本。另请阅读什么是Constant Expression
  • 我不知道您为什么对我的工作答案投了反对票。我不能让你喜欢我的回答。顺便说一句 - 我知道常量表达式是什么。另外,我已经测试了我的答案,否则我不会发布它。我知道这适用于我的用例,我正在使用它。我不知道还能告诉你什么。人们会尝试的。如果它对他们有用。如果没有,他们可以离开。
  • 我对此投了反对票,因为检查var foobar = './foobar.json';length 属性将始终为13,因此,这是Constant Expression(始终为true)。
【解决方案2】:

使用Gutil

var fs = require('fs');
var gulp = require('gulp');
var foobar = './foobar.json';

const gutil = require("gulp-util");

gulp.task('my-task'), function() {
  if (!fs.existsSync(foobar)) {
    throw new gutil.PluginError({
      plugin: 'my-task',
      message: `cannot read "${foobar}"`
    });
  }
});

【讨论】:

  • 我没有对此投反对票,但我认为我不会使用它,因为我想避免再添加两个模块来添加错误消息。是否可以使用 Plummer 来做到这一点?
  • fs 是一个内置模块,安装 node 后它就会出现。 Gutil(又名 gulp utils)旨在与 gulp 配对,增强您的流程(彩色日志、vynil 文件、适当的 gulp 错误管理等...)。不要害怕,它们是有用的东西。
猜你喜欢
  • 1970-01-01
  • 2018-11-15
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
相关资源
最近更新 更多