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

7 javascript sass node.js express

我已经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
Run Code Online (Sandbox Code Playgroud)

哪两个目录都错了,为什么中间件stylesheets/source/ dest(..public/stylesheets/sass/)和.sass file/ .css file(main.sassmain.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'
}));
Run Code Online (Sandbox Code Playgroud)

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

Ver*_*ger 10

那是因为 - 我很确定 - 在你的html文件中有类似的东西:

<head>

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

</head>
Run Code Online (Sandbox Code Playgroud)

- 让我们将href称为yourAwesomeHref一会儿.

当您的服务器收到任何get请求时,中间件将查找后续编译的 main.sass on /home/karim/Snippets/my-financial/public/stylesheets(dest中间件选项)yourAwesomeHref,从而产生以下路由:

/home/karim/Snippets/my-financial/public/stylesheets/stylesheets/main.css
Run Code Online (Sandbox Code Playgroud)

哪个文件显然根本不存在!因此,您必须添加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'
}));
Run Code Online (Sandbox Code Playgroud)