为什么node-sass-middleware不工作?

我已经在我的快速应用程序上安装了node-sass-middleware模块,但是我没有得到这个工作,只是因为中间件读取了不正确的源代码,所以当我debugging控制台日志时:

 GET / 200 558.983 ms - 4651 source: /home/karim/Snippets/my-financial/public/stylesheets/sass/stylesheets/main.sass dest: /home/karim/Snippets/my-financial/public/stylesheets/stylesheets/main.css read: /home/karim/Snippets/my-financial/public/stylesheets/stylesheets/main.css 

哪两个目录是错误的,为什么中间件在source / dest..public/stylesheets/sass/ )和.sass file / .css filemain.sassmain.css )之间添加stringstylesheets/

我有我的app.js里面的这个configuration:

 var sassMiddleware = require('node-sass-middleware'); ... ... var app = express(); app.use(sassMiddleware({ src: path.join(__dirname, 'public/stylesheets/sass'), dest: path.join(__dirname, 'public/stylesheets'), debug: true, indentedSyntax: true, outputStyle: 'compressed' })); 

显然这不是编译任何东西,因为目录是错误的。 在..public/stylesheets/sass/文件夹里面,我只有一个文件,我想要编译并移动sass/文件夹之外的结果..public/stylesheets/ ,我的意思是在..public/stylesheets/

这是因为 – 我很确定 – 你的HTML文件中有这样的东西:

 <head> <!--All your head stuff and--> <link rel="stylesheet" href="/stylesheets/main.css"/> </head> 

– 让我们暂时把这个href称为yourAwesomeHref。

当你的服务器收到任何get请求时,中间件将在main.sass/home/karim/Snippets/my-financial/public/stylesheets (中间件的dest选项)上yourAwesomeHref ,产生以下路由:

 /home/karim/Snippets/my-financial/public/stylesheets/stylesheets/main.css 

哪个文件显然不存在! 所以你必须在中间件上添加prefix: "/stylesheets"来避免这个问题。

最终的代码是:

 var sassMiddleware = require('node-sass-middleware'); ... ... var app = express(); app.use(sassMiddleware({ src: path.join(__dirname, 'public/stylesheets/sass'), dest: path.join(__dirname, 'public/stylesheets'), debug: true, indentedSyntax: true, outputStyle: 'compressed', prefix: '/stylesheets' }));