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

时间:2015-01-25 18:40:50

标签: sass gulp gulp-watch

我有gulp-ruby-sass的问题。当我尝试运行 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-slash但它不起作用。

3 个答案:

答案 0 :(得分:82)

从1.0.0-alpha开始, gulp-ruby-sass 中的syntax changes,您需要使用gulp-ruby-sass()代替gulp.src()来从文件或目录编译你的Sass。

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

TypeError: Arguments to path.join must be strings

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

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'));
});

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

// 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时,尚不支持globs。

答案 1 :(得分:6)

版本1.0.0中的

gulp-ruby-sass语法更改。看到这个问题:

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'));
});

答案 2 :(得分:1)

稍微偏离主题,但在想要使用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'));
});

请注意,源地图的目标参数'./'将评估到下面一行中的文件夹gulp.dest(...),此处有效,地图文件将以'path/to/css'结尾。< / p>

归功于http://www.devworkflows.com/posts/getting-scss-auto-prefixer-and-source-map-to-play-nice/