必须将实现选项传递给Sass任务

Dre*_*ewM 3 sass npm gruntjs node-sass gruntfile

运行咕unt声-我收到此错误消息:

Running "sass:all" (sass) task
Fatal error: The implementation option must be passed to the Sass task
Run Code Online (Sandbox Code Playgroud)

我试过重新安装grunt,node,npm,dependencies-但我总是回到这个无法逾越的错误。

我应该发布我的Gruntfile.js吗?坦白说,这是由第三方建立的,我们不经常使用-我想也许我们应该从头开始,因为它最初是大约4年前的...但是想知道是否有人看到过此错误之前,并且知道修复程序/解决方法。

Mic*_*den 11

随着grunt-sass 3的更新,您必须选择要使用node-sass还是dart-sass进行编译对于node-sass,您需要使用以下命令安装模块:

$ npm install --save-dev node-sass 
Run Code Online (Sandbox Code Playgroud)

在gruntfile中,您需要添加node-sass作为要求,并添加define constant作为实现选项:

const sass = require('node-sass');

require('load-grunt-tasks')(grunt);

grunt.initConfig({
    sass: {
        options: {
            implementation: sass,
            sourceMap: true
        },
        dist: {
            files: {
                'main.css': 'main.scss'
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

另请参阅官方页面以获取更多详细信息:https : //www.npmjs.com/package/grunt-sass


Mat*_*abe -1

更新:仅适用于 grunt-sass 2.x

我从 grunt-sass 1.x 升级到 2.x 时遇到了这个问题。这为我解决了这个问题:

添加implementation: 'sass'到您的sass. optionsGruntfile.js 中的对象如下所示:

options: {
    implementation: 'sass',
    outputStyle: 'expanded',
    sourceMap: true,
    quiet: true // stop depreciation errors
},
Run Code Online (Sandbox Code Playgroud)