一、报错信息
在学习element-ui过程中,运行npm run build:theme出现问题:
TypeError: sass.sync is not a function
'compile' errored after 26 ms
TypeError: sass.sync is not a function
at compile (/Users/suda/Documents/work/study/element/packages/theme-chalk/gulpfile.js:10:16)
at bound (domain.js:425:14)
at runBound (domain.js:438:12)
at asyncRunner (/Users/suda/Documents/work/study/element/node_modules/async-done/index.js:55:18)
at processTicksAndRejections (internal/process/task_queues.js:79:9)
此时我的本地gulp-sass是最新版:
"gulp-autoprefixer": "^6.0.0",
"gulp-cssmin": "^0.2.0",
"gulp-sass": "^5.1.0",
二、报错原因
发现该问题在github被提了一个bug,并在最新版被解决,详情见github.com/uswds/uswds…
三、解决办法
从版本 5 开始,gulp-sass 不再包含默认的 Sass 编译器,因此必须附加下载node-sass或sass
(1)配合sass
// gulpfile.js
- const sass = require('gulp-sass')); //删掉
- const compiler = require('sass'); //删掉
- sass.compiler = compiler; //删掉
+ const sass = require('gulp-sass')(require('sass')); //添加
随后报错:
Error: Cannot find module 'sass'
注意,这里要下载另外的sass包。
$ npm install sass -D
(2)配合使用node-sass
// gulpfile.js
const sass = require('gulp-sass')(require('node-sass')); //添加
随后下载node-sass包
$ npm install node-sass -D
重新打包验证:
$gulp build --gulpfile packages/theme-chalk/gulpfile.js
没问题了~