我正在尝试使用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/sass
和public/stylesheets
,但无论我放在sass目录中的.scss
个文件,都没有编译。还有什么我需要超越node app.js
?
我真的很放弃,只需安装sass gem并保持一个额外的标签打开以观看目录。
答案 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
我相信它的工作原理如下:
/stylesheets/app.css
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以及其他一些很好的功能。