node-sass没有用node / express编译

时间:2013-03-28 05:06:25

标签: node.js express sass

我正在尝试使用express来运行node-sass,而我根本无法让它进行任何编译。这是我的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/sasspublic/stylesheets,但无论我放在sass目录中的.scss个文件,都没有编译。还有什么我需要超越node app.js

我真的很放弃,只需安装sass gem并保持一个额外的标签打开以观看目录。

3 个答案:

答案 0 :(得分: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文件,将网址路径连接到src并替换扩展名:./public/sass/stylesheets/app.scss
  • 作为目标,将网址路径连接到dest./public/stylesheets/app.css

答案 1 :(得分:2)

尝试使用前缀选项:

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

答案 2 :(得分:1)

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

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