Sass Gulp TypeError:path.join的参数必须是字符串

Sass Gulp TypeError:path.join的参数必须是字符串,sass,gulp,gulp-watch,Sass,Gulp,Gulp Watch,我对吞咽鲁比沙斯有意见。当我尝试运行“监视”任务并更改某些.sass文件时,会出现以下错误: TypeError: Arguments to path.join must be strings 这是我的gulpfile.js var gulp = require('gulp'); var jade = require('gulp-jade'); var sass = require('gulp-ruby-sass'); var watch = require('gulp-watch');

我对吞咽鲁比沙斯有意见。当我尝试运行“监视”任务并更改某些.sass文件时,会出现以下错误:

TypeError: Arguments to path.join must be strings 
这是我的gulpfile.js

var gulp = require('gulp');
var jade = require('gulp-jade');
var sass = require('gulp-ruby-sass');
var watch = require('gulp-watch');

gulp.task('sass', function() {
    return gulp.src('sass/*.sass')
        .pipe(sass())
                .pipe(gulp.dest('./css'));

});
gulp.task('watch', function() {
    gulp.watch('./sass/*.sass', ['sass']);
})

我使用了gulpslash,但它不起作用。

gulpruby-sass
1.0.0版中的语法更改。见本期:

新文档当前位于此处:

这将编译指定目录中的sass文件:

gulp.task('sass', function() {
    return sass('sass/')
        .pipe(gulp.dest('./css'));
});
从1.0.0-alpha开始使用ingulp-ruby-sass,您需要使用
gulp-ruby-sass()
而不是
gulp.src()
从文件或目录编译sass

如果尝试在较新或最新版本中使用原始语法,可能会遇到以下错误:

TypeError:path.join的参数必须是字符串

例如,0.7.x及更早版本中使用gulp.src()的原始语法现在已被弃用:

var gulp=require('gulp');
var sass=require('gulp-ruby-sass');
//大口喝ruby sass:0.7.1
gulp.task('sass',function(){
return gulp.src('path/to/scss'))
.pipe(sass({style:'expanded'}))
.pipe(吞咽目的地('path/to/css');
});
1.x中引入的新语法使用gulp-ruby-sass()作为gulp源适配器:

//gulpruby-sass:1.x
gulp.task('sass',function(){
返回sass('path/to/scss',{style:'expanded'})
.pipe(吞咽目的地('path/to/css');
});
请注意return语句第一行中的差异


另外请记住,在撰写本文时,当使用gulp ruby sass 1.0.0-alpha时,还不支持GLOB。

稍微偏离主题,但如果您也想使用,那么各种文档都有些过时。要将的示例用于sourcemaps,您可以这样做

//gulpruby-sass:1.x
gulp.task('sass',function(){
返回sass('path/to/scss',{style:'expanded',sourcemap:true})
.pipe(sourcemaps.init({loadMaps:true}))
.pipe(sourcemaps.write('./'))
.pipe(吞咽目的地('path/to/css');
});
请注意,源地图的目标参数,
'./'
将计算到下面一行中的文件夹,
gulp.dest(…)
,实际上在这里,地图文件将以
'path/to/css'
结束


这要归功于。

您需要的是
gulpwatch
,但没有使用它。您确定这正是发生问题的gulpfile吗?它在windows上。你为什么说我没有用大块头手表<代码>gulp.task('watch',function(){gulp.watch('./sass/*.sass',['sass']);})有我的watch任务。当我注释行
.pipe(sass())
时,问题不存在,但我有另一个问题-我的sass没有编译成css:)
gulp watch
是一个单独的库<代码>大口喝。手表是大口喝的一部分。您是否使用所有模块的最新版本?是的,我使用。我不知道发生了什么事你有什么版本的ruby sass吗?以防万一,记住你必须有sass>=3.4,根据同样的说法。可能会帮助别人:文件或glob模式(source/***/.scss)编译。忽略以下划线为前缀的文件。不支持目录源。请将此作为注释添加到上述答案中。这是一个很好的补充。