You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gulp报错TypeError: sass is not a function,切换Dart Sass后失效

解决gulp-sass搭配Dart Sass时出现TypeError: sass is not a function的问题

问题原因

你遇到的错误是因为gulp-sass的导入逻辑发生了变更:现在它不再内置Sass编译器(不管是node-sass还是Dart Sass),必须手动传入你安装的Dart Sass实例才能正常调用。同时你的Node.js版本(10.13.0)较旧,需要安装适配该版本的gulp-sass和Dart Sass版本。

解决步骤

1. 安装兼容版本的依赖

由于你使用Node.js 10.13.0,需安装对该版本兼容的gulp-sass和Dart Sass:

# 先卸载旧的相关依赖(如果之前安装过)
npm uninstall gulp-sass node-sass

# 安装兼容版本
npm install gulp-sass@4.1.1 sass@1.32.13 --save-dev

2. 修正gulpfile中的导入语句

将原来的sass导入代码,修改为需要传入Dart Sass实例的形式:

// 替换原来的 const sass = require('gulp-sass');
const sass = require('gulp-sass')(require('sass'));

3. 调整Sass配置参数

Dart Sass不支持node-sass的cache参数,需替换为cacheLocation:

function scss () {
    return src(`${__dirname}/.../*.scss`)
        .pipe(sass({
            outputStyle: 'expanded',
            cacheLocation: '/tmp/sass-cache' // 替换原有的cache参数
        }).on('error', sass.logError))
        .pipe(postcss([ autoprefixer() ]))
        .pipe(dest('System/cache'));
}

4. 重新运行Gulp命令

执行gulp命令,此时scss任务应该可以正常执行了。

补充说明

  • gulp-sass v5及以上版本要求Node.js 12+,因此你必须安装v4.x版本才能适配Node.js 10。
  • Dart Sass的配置参数和node-sass存在部分差异,若遇到其他参数报错,可参考Dart Sass官方文档调整。

内容的提问来源于stack exchange,提问作者physicsboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:40:25