使用 node.js 从字符串编译 scss

compile scss with node.js from string

我正在尝试使用 node.js 和 node-sass 模块编译 scss,问题是当我插入 scss 代码时,我只能编译 sass 代码说错误语法错误。奇怪的是,当我将相同的代码放入文件并从 *.scss 文件编译时,它可以工作。不幸的是,我的应用程序的性质要求它是从字符串编译的。任何人有一些想法? ;)

这是有效的代码:

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

/* test.scss content: $text-color:#555555;\nbody{background:$text-color;} */

var output = sass.render({
    file: __dirname + '/test.scss',
    indentedSyntax: true,
    outputStyle : 'expanded'
}, function(err, result) {
    if(err) console.log(err);
    if(result) console.log(result, result.css.toString()); 
});

这是一个没有的:

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

var dataTemp = '$text-color:#555555;\nbody{background:$text-color;}';

var output = sass.render({
    data: dataTemp,
    indentedSyntax: true,
    outputStyle : 'expanded'
}, function(err, result) {
    if(err) console.log(err);
    if(result) console.log(result, result.css.toString()); 
});

这似乎很奇怪,因为 official doc 包含使用数据中的 scss 代码的示例。

按照docs, indentedSyntax option enables indent-sensitive sass模式。看起来 render 期望 sass 而在获取 scss 时失败。尝试删除此行:

indentedSyntax: true,

我猜想在第一种情况下,当您从文件加载代码时,渲染器使用 .scss 扩展名来确定语法规则。希望对你有帮助。