为什么node-sass-middleware不起作用?

时间:2015-06-04 21:16:05

标签: javascript node.js express sass

我已经在我的快速应用程序上安装了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/ / sourcedest)和..public/stylesheets/sass/ / {之间添加字符串.sass file {1}}(.css filemain.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/

1 个答案:

答案 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'
}));