Node.js 使用Express自动编译SASS

Node.js 使用Express自动编译SASS,node.js,express,node-sass,Node.js,Express,Node Sass,我已经习惯了Express和其他各种与节点相关的框架,因为我发现它比ASP MVC世界更有趣、更轻量级。。我要做的第一件事就是让SASS文件自动编译成CSS文件 我已经找到了一些方法,安装了node-sass,并学习了一些教程,但我还没有达到我想要的效果。首先,这里是我的目录结构 app.js static/ stylesheets/ images/ js/ sass/ index.sass views/

我已经习惯了Express和其他各种与节点相关的框架,因为我发现它比ASP MVC世界更有趣、更轻量级。。我要做的第一件事就是让SASS文件自动编译成CSS文件

我已经找到了一些方法,安装了
node-sass
,并学习了一些教程,但我还没有达到我想要的效果。首先,这里是我的目录结构

app.js
    static/
        stylesheets/
        images/
        js/
    sass/
        index.sass
    views/
        index.jade
因此,我的计划相当简单:当我在浏览器中访问
views/index.jade
时,我希望
index.jade
呈现
static/stylesheets/index.css
——显然,这在编译时并不存在,但我们在
sass
中有相应的
index.scss
文件

我目前的设置是
/css/index.css
将引用
\u dirname/static/stylesheets
。因此,在我的jade view中,我有以下块:

block head
    link(href='/css/index.css', rel='stylesheet')
其目的是此链接将引用已编译的sass文件。以下是app.js中有关sass编译和静态内容服务的部分:

// Enable SASS compilation
app.use(sass.middleware({
    src: __dirname + '/sass',
    dest: __dirname + '/static/stylesheets',
    debug: true,
    outputStyle: 'compressed'
}));

// Add static content
app.use('/js', express.static(__dirname + '/static/js'));
app.use('/img', express.static(__dirname + '/static/img'));
app.use('/css', express.static(__dirname + '/static/stylesheets'));
我的问题是,实际发生的情况是,SASS似乎很好地编译了css,但由于我上面使用的
/css
路径,它将所有内容都预先添加到
/css/
文件夹中(该文件夹不存在)。也许调试输出更有意义:

 source : E:\project\sass\css\index.scss
 dest : E:\project\static\stylesheets\css\index.css
 read : E:\project\static\stylesheets\css\index.css
显然,这并不是故意的,并且最终导致404,因为浏览器认为我们正在请求
css/index.css
,但是SASS文件正在有效地编译成
css/css/index.css


我在这里该怎么办?我假设我犯了一个明显的错误,但我看不出来,因为我是node/express的新手。

我通过将sass文件的扩展名更改为scss修复了这个问题。这是唯一的问题考虑到包名为
node sass
,有点烦人