2016-11-28 24 views
3

node.jsとnode-sassモジュールを使用してscssをコンパイルしようとしていますが、問題は私がscssコードを挿入するときに間違った構文。奇妙なのは、私が同じコードをファイルに入れ、* .scssファイルからコンパイルすると動作するということです。残念ながら、私のアプリケーションの性質上、文字列からコンパイルする必要があります。誰にでもいくつかのアイデアがありますか? ;)stringからnode.jsを含む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()); 
}); 

これはdoesntの一つである:

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コードを使用して実施例を含んでいるので、それは奇妙に思えます。

+1

それはスペースに何とか敏感だように見える: 'VAR dataTemp = '$のテキストの色を:#555555; \のnbody {背景:$テキストの色;}';' - このバリアントはこれがである私 – idmitme

+0

の作品何らかの形で真実なので、基本的には、中括弧を開いた後に改行を使用するとエラーが発生します。すべての構文オプションで動作しません。そのような "選択的"な作業で、このようにしてもコードはテキストエリアに書き込まれません。それはそれのようにそれを処理することが不可能になります。誰かが新しい行や空白に敏感にならないようにする方法を知っているかもしれません –

答えて

4

docsによれば、indentedSyntaxオプションは、インデントセンシティブsassモードを有効にします。代わりにscssを取得すると、レンダリングが嫌だと思って失敗するようです。

indentedSyntax: true, 

ファイルからコードをロードした最初のケ​​ースでは、レンダラーは.scss拡張子を使用して構文規則を決定していたと思います。それが役に立てば幸い。

関連する問題