2016-06-08 35 views
2

考虑下面的代码工作:一饮而尽sass.logError不是在Visual Studio任务运行

var gulp = require('gulp'); 
var sass = require('gulp-sass'); 
var gdebug = require('gulp-debug'); 

module.exports = function (sourcedir, targetDir, directTarget) 
{ 
    return function() 
    { 
     var source = directTarget != null ? directTarget : sourcedir + '/**/*.scss'; 

     return gulp.src(source, { base: sourcedir }) 
      .pipe(sass({ includePaths: [`${sourcedir}/**/`] }).on('error', sass.logError)) 
      .pipe(gulp.dest(targetDir)) 
      .pipe(gdebug()); 
    } 
} 

当在Visual Studio任务运行运行这一点,上海社会科学院编制内的所有错误都完全隐藏。如果我用简单的function(e){console.log(e)}替换sass.logError,则会按预期方式记录错误事件。

我很确定这是以前的样子,我最近才注意到我有一些scss文件默默无法编译。发生了什么事?

回答

5

亚历克斯,

我们跨越完全相同的问题,今天来并寻找替代品。原来sass.logError函数不会将错误传递回gulp系统,而是传递给'process.stderr.write(message +'\ n');'

这在路径下的index.js文件中找到。

\\Project\nodule_modules\gulp-saas\index.js\

的功能是在线路170(APX)所定义的。

////////////////////////////// 
// Log errors nicely 
////////////////////////////// 
gulpSass.logError = function logError(error) { 
    var message = new gutil.PluginError('sass', error.messageFormatted).toString(); 
    process.stderr.write(message + '\n'); 
    this.emit('end'); 
}; 

作为一个变通我已经修改了文件打印到gutil.log方法,这反过来又传递给控制台视觉工作室。

首先,你需要输入该文件的顶部需要条目(其余)的(这不仅使漂亮的颜色)

var chalk = require('chalk');

然后修改LOGERROR如下。

////////////////////////////// 
// Log errors nicely 
////////////////////////////// 
gulpSass.logError = function logError(error) { 
    gutil.log('Error', chalk.red('Uncaught error while processing task ') + '\'' + chalk.cyan('saas') + chalk.red('\'.')); 
    gutil.log('Message', error.formatted); 
    this.emit('end'); 
}; 

您将看到两行显示在控制台上,第一行显示一条通用消息(红色以引起您的注意),然后是消息。 在error中传递的对象是一个标准的JavaScript对象,具有以下属性。

{ 
    "formatted": 
    "message":, 
    "column":, 
    "line":, 
    "file":, 
    "status":, 
    "messageFormatted":, 
    "stack":, 
    "showProperties":, 
    "plugin": 
} 

这是一个示例结果。

example of gulp-error message in Visual Studio

+0

我不能这样做,因为我不想为所有的开发团队破解它,也没有提交node_module hacks ...也许gulp-sass团队应该修复它? – TDaver

+0

@TDaver和Nico,检查我的答案。似乎罪魁祸首是微软。 – Alex

1

看起来这是由于一个错误的Microsoft ASP.NET and Web Tools。现在有一个新版本,预览版2,这个问题似乎已经解决了。

因此不需要解决方法。