我已经在我的快速应用程序上安装了node-sass-middleware
模块,但我没有得到它的工作,只是因为中间件正在读取错误的源,当我调试控制台日志时:
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
这两个目录都是错误的,为什么中间件在stylesheets/
/ source
(dest
)和..public/stylesheets/sass/
/ {之间添加字符串.sass file
{1}}(.css file
和main.sass
)?
我在main.css
:
app.js
显然这不是编译任何东西,因为目录是错误的。
在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/
我想编译并将结果移到main.sass
文件夹之外,我的意思是sass/
。
答案 0 :(得分:10)
那是因为 - 我很确定 - 在你的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'
}));