node.js – Node-sass不会在最新的node / express中自动编译

前端之家收集整理的这篇文章主要介绍了node.js – Node-sass不会在最新的node / express中自动编译前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用node(0.10.15)和express(3.3.4),以及最新的node-sass,我无法获取我的scss文件进行编译.我的app.js文件如下所示:
var express = require('express'),routes = require('./routes'),user = require('./routes/user'),http = require('http'),path = require('path'),sass = require('node-sass');

var app = express();

// all environments
app.set('port',process.env.PORT || 3000);
app.set('views',__dirname + '/views');
app.set('view engine','ejs');
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.use(
  sass.middleware({
    src: __dirname + '/public/sass',dest: __dirname + '/public',debug: true,outputStyle: 'compressed'
  })
);

// development only
if ('development' == app.get('env')) {
  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'));
});

为了自动编译,我缺少什么?

如果重要,我正在使用主管来监控变化.

解决方法

中间件按照附加到应用程序的顺序执行. node-sass中间件只将scss文件编译为css,它不提供服务.静态中间件能够为已编译的css文件提供服务,但是,只要尚未编译css文件,它就不能这样做.如果你切换静态和sass中间件,一切都应该按预期工作:
app.use(
  sass.middleware({
    src: __dirname + '/public/sass',outputStyle: 'compressed'
  })
);

app.use(express.static(path.join(__dirname,'public')));

现在,当您请求/style.css时会发生以下情况:

> sass注意到对css文件的请求.如果dest文件(__dirname’/ public”/ style.css’)是最新的,它什么都不做.否则,它会查找src文件(__dirname’/ public / sass”/ style.scss’)并编译它(如果存在).> static注意到对静态资产的请求.如果所请求的文件(path.join(__ dirname,’public’)’/ style.css’)确实存在,则会提供该文件.

猜你在找的Node.js相关文章