8

node-sass を Express で動作させようとしていますが、コンパイルをまったく実行できません。これは私の app.js ファイルです:

var express = require('express')
  , sass = require('node-sass')
  , routes = require('./routes')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path');

var app = express();

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'ejs');
  app.use(sass.middleware({
     src: __dirname + '/public/sass',
     dest: __dirname + '/public/stylesheets', 
     debug: true
  }));
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieParser('your secret here'));
  app.use(express.session());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
});

app.configure('development', function(){
  app.use(express.errorHandler());
});

app.get('/', routes.index);
app.get('/users', user.list);

http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});

私はpublic/sassとを持っていますが、sass ディレクトリにpublic/stylesheetsどの.scssファイルを配置しても、何もコンパイルされません。超えて実行する必要があるものは他にありますnode app.jsか?

私は本当にあきらめて、sass gemをインストールし、ディレクトリを監視するために追加のタブを開いたままにしています。

4

3 に答える 3

8

これは、Stylus ミドルウェアと同じくらい紛らわしいものです (このミドルウェアに触発されていると説明されています)。

のフォルダー構造は、CSS ファイルを要求するために使用している宛先srcパスの最終的な構造を模倣する必要があります。CSS ファイルを次のように保存する場合:

./public/stylesheets/app.css

ファイルにアクセスするための URL は次のようになります。

http://.../stylesheets/app.css

次のようにミドルウェアを構成する必要があります。

app.use(sass.middleware({
   src:   __dirname + '/public/sass',
   dest:  __dirname + '/public',
   debug: true
}));

SASS フォルダー構造は次のようになります。

./public/sass/stylesheets/app.scss

私はそれが次のように機能すると信じています:

  • HTTP リクエストのパスを取得します。/stylesheets/app.css
  • SCSS ファイルを見つけるには、URL パスを連結しsrcて拡張子を置き換えます。./public/sass/stylesheets/app.scss
  • dest宛先として、URL パスを次のように連結します。./public/stylesheets/app.css
于 2013-03-28T06:57:25.977 に答える
1

node-sass ミドルウェアが機能するのと同様の問題がありました。私は最終的にあきらめて、 このフォークを使い始めるまで動作しなかったアセットラックを試しました: https://github.com/techpines/asset-rack/pull/76

アセット ラック フォークのプル リクエストが 11 か月間放置されていたことに不満を感じていたので、Sass をサポートするElectricityという独自の静的ファイル ミドルウェアを作成することになりました。

于 2014-04-07T18:58:08.867 に答える