Gulp TypeError:path.join的参数必须是string

我有我的问题,大嘴ruby。 当我尝试运行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']); }) 

我用gulp斜线,但它不起作用。

随着gulp-ruby-sass从1.0.0-alpha开始的语法变更 ,您需要使用gulp-ruby-sass()而不是gulp.src()来从文件或目录编译Sass。

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

TypeError: Arguments to path.join must be strings

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

 var gulp = require('gulp'); var sass = require('gulp-ruby-sass'); // gulp-ruby-sass: 0.7.1 gulp.task('sass', function() { return gulp.src('path/to/scss') .pipe(sass({ style: 'expanded' })) .pipe(gulp.dest('path/to/css')); }); 

在1.x中使用gulp-ruby-sass()作为吞吐源适配器的新语法:

 // gulp-ruby-sass: 1.x gulp.task('sass', function() { return sass('path/to/scss', { style: 'expanded' }) .pipe(gulp.dest('path/to/css')); }); 

注意return语句第一行的区别。

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

gulp-ruby-sass语法在版本1.0.0中改变。 看到这个问题:

https://github.com/sindresorhus/gulp-ruby-sass/issues/191

新的文档目前在这里:

https://github.com/sindresorhus/gulp-ruby-sass/tree/rw/1.0#gulp-ruby-sass-is-a-gulp-source-adapter

这应该在指定的目录下编译sass文件:

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

稍微偏离主题,但在也想使用gulp-sourcemaps的情况下,各种文档已经有点过时了。 要使用源代码中的rjb例子,你就这样去了

 // gulp-ruby-sass: 1.x gulp.task('sass', function() { return sass('path/to/scss', { style: 'expanded', sourcemap: true }) .pipe(sourcemaps.init({loadMaps: true})) .pipe(sourcemaps.write('./')) .pipe(gulp.dest('path/to/css')); }); 

请注意,sourcemaps的目标参数'./'将在下面的行中计算到文件夹gulp.dest(...) ,在这里有效,map-file将以'path/to/css'结尾。

信用为此去http://www.devworkflows.com/posts/getting-scss-auto-prefixer-and-source-map-to-play-nice/

    Interesting Posts