javascript - SASS 错误导致奇怪的 gulp 崩溃

标签 javascript sass gulp

我目前正在构建一个项目并使用 Gulp 作为任务运行器,并使用 gulp-sass 作为 SASS 编译引擎。 问题是,每当我在 main.scss 文件中犯错误时,在文件末尾的其他描述的片段中(下面的代码),一切都会顺利,按预期 gulp handeles sass 错误,并继续运行。(下面的示例)

[18:14:28] Starting 'sass'...
[18:14:28] Finished 'sass' after 3.25 ms
Error in plugin 'sass'
Message:
    src\sass\main.scss
Error: Invalid CSS after "    margin": expected "}", was ": 0;"
        on line 37 of stdin
>>     margin: 0;
   ----^

但是当第 65 行上有一个分号时,整个事情就会停止工作,没有任何日志,并且拒绝启动,除非我修复它。(示例)

[18:19:23] Starting 'sass'...
[18:19:23] Finished 'sass' after 3.18 ms

C:\test

有什么想法导致此错误吗?我知道最明显的解决方案是“不要在 sass 中犯错误”,但我仍然想解决它。

节点版本5.9.1。
操作系统 - Windows 10。
https://bitbucket.org/gentos/strangegulpbehaviour如果需要重现错误,我还将一个麻烦的 sass 和 gulpfile 文件放入一个迷你项目中。
预先感谢您的时间和帮助!

这段代码放置在我的任何主 gulp 文件的末尾,导致了所描述的行为。删除了其余无关的因素。

nav{
    position: fixed
    ul{
      li{
      }
    }
} 

gulpfile.js

var gulp = require('gulp'),
    sass = require('gulp-sass'),
    watch = require('gulp-watch'),
    cleanCSS = require('gulp-clean-css');
    browserSync = require("browser-sync"),
    gutil = require('gulp-util'),
    reload = browserSync.reload;

var path = {
    build: { 
        html: 'build/',
        js: 'build/js/',
        css: 'build/css/',
        image: 'build/img/'

    },
    src: { 
        html: 'src/*.html', 
        js: 'src/js/**/*.js',
        sass: 'src/sass/**/*.scss',
        css: 'src/css/**/*.css',
        image: 'src/img/*'
    },
    watch: {
        html: 'src/**/*.html',
        js: 'src/js/**/*.js',
        sass: 'src/sass/*',
        css: 'src/css/**/*.css',
        image: 'src/img/*'
    },
    clean: './build'
};


function handleErrors() {
  var gutil = require('gulp-util');
  var args = Array.prototype.slice.call(arguments);

  gutil.log(gutil.colors.white.bgRed.underline.bold('Gulp error:'));
  gutil.log(gutil.colors.red(args));

  this.emit('end');
}
gulp.task('html',function(){
    gulp.src(path.src.html)
    .pipe(gulp.dest(path.build.html))
    .pipe(reload({stream: true}));
});

gulp.task('browser-sync', function() {
    browserSync.init({
        server: {
            baseDir: [path.build.html]
        }
    });
});



gulp.task('sass',function(){                
  gulp.src('./src/sass/main.scss')
    .pipe(sass({includePaths: ['./src/sass']}).on('error', sass.logError))  
    .pipe(sass().on('error', sass.logError))
    .pipe(cleanCSS({debug: true}, function(details) {
            console.log(details.name + ': ' + details.stats.originalSize);
            console.log(details.name + ': ' + details.stats.minifiedSize);
        }))
    .pipe(gulp.dest(path.build.css))
    .pipe(reload({stream: true}));

});



gulp.task('watch', function(){
    watch([path.watch.sass], function(event, cb) {
        gulp.start('sass');
    });
});


gulp.task('default', ["sass", "html", "browser-sync" ,"watch"]);    

最佳答案

运行此命令并重置 Universe

npm install gulp-sass

或跟踪错误

sass --trace --watch input.scss:output.css

关于javascript - SASS 错误导致奇怪的 gulp 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36388115/

相关文章:

javascript - 使用jquery将div放置在窗口的空白部分中间

将元素添加到数组时,Javascript 未定义错误

css - 如何从 SASS 中的基色中获取所需的颜色

function - 如何从 SASS 中的任意数字中去除单位?

gulp-jshint : How to fail the build?

javascript - 当 Chrome 选项卡打开但未激活时,Firebase 通知 onMessage 未命中

javascript - Ajax - For 循环

ruby-on-rails - 跨样式表的 SCSS 常量 (Rails)

javascript - 在 gulp.rename() 调用中使用早期 gulp.src 的文件名

mysql - 在我的 Mac 上安装了 MySQL,它删除了全局 npm、gulp 等。保存 npm 的步骤?