gulp sass.logError 在 visual studio 任务运行器中不工作
gulp sass.logError not working in visual studio task runner
考虑以下代码:
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 任务运行器中执行此操作时,sass 编译中的所有错误都被完全隐藏。如果我用简单的 function(e){console.log(e)}
替换 sass.logError,错误事件将按预期记录。
我很确定这能像以前一样工作,我最近才注意到我有一些 scss 文件静默无法编译。可能发生了什么?
亚历克斯,
我们今天遇到了完全相同的问题,正在寻找替代方案。事实证明 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
方法,该方法又传递到 visual studio 中的控制台。
首先,您需要在文件顶部输入一个要求条目(其余部分)作为(这只会产生漂亮的颜色)
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":
}
这是一个示例结果。
这似乎是由于 Microsoft ASP.NET and Web Tools 中的错误所致。现在有新版本发布,Preview 2,这个问题好像解决了。
因此不需要解决方法。
考虑以下代码:
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 任务运行器中执行此操作时,sass 编译中的所有错误都被完全隐藏。如果我用简单的 function(e){console.log(e)}
替换 sass.logError,错误事件将按预期记录。
我很确定这能像以前一样工作,我最近才注意到我有一些 scss 文件静默无法编译。可能发生了什么?
亚历克斯,
我们今天遇到了完全相同的问题,正在寻找替代方案。事实证明 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
方法,该方法又传递到 visual studio 中的控制台。
首先,您需要在文件顶部输入一个要求条目(其余部分)作为(这只会产生漂亮的颜色)
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":
}
这是一个示例结果。
这似乎是由于 Microsoft ASP.NET and Web Tools 中的错误所致。现在有新版本发布,Preview 2,这个问题好像解决了。
因此不需要解决方法。