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/sassand public/stylesheets,但无论.scss我在 sass 目录中放置什么文件,都没有编译任何文件。还有什么我需要超越的node app.js吗?

我真的快要放弃了,只需安装 sass gem 并保持一个额外的选项卡打开以查看目录。

4

3 回答 3

8

它和 Stylus 中间件一样令人困惑(它说它的灵感来自于它)。

的文件夹结构src应该模仿目标的最终结构以及您用来请求 CSS 文件的路径。如果您希望您的 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
  • 对于目的地,将 URL 路径连接到dest./public/stylesheets/app.css
于 2013-03-28T06:57:25.977 回答
2

尝试使用前缀选项:

app.use(sass.middleware({
    src: __dirname + '/public/sass',
    dest: __dirname + '/public', 
    prefix:  '/stylesheets'
    debug: true
}));
于 2014-05-14T20:13:05.920 回答
1

我在让 node-sass 中间件工作时遇到了类似的问题。我最终放弃并尝试了 asset-rack,直到我开始使用这个fork,我也无法开始工作:https ://github.com/techpines/asset-rack/pull/76

对资产机架分支的拉取请求已经存在 11 个月感到沮丧,我最终只编写了自己的名为Electricity的静态文件中间件,它支持 Sass 以及其他一些不错的功能。

于 2014-04-07T18:58:08.867 回答