为什么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 file
( main.sass
和main.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' }));