Javascript 带有节点sass中间件的Express app只提供一次正确的样式表

Javascript 带有节点sass中间件的Express app只提供一次正确的样式表,javascript,css,node.js,express,Javascript,Css,Node.js,Express,我正处于创建Node.js/Express应用程序的早期阶段(这是我比较熟悉的领域),我正在尝试集成SASS来处理样式。我使用的是node-sass中间件包,能够让sass呈现到CSS中并显示出来,但只有在重启服务器后才会显示一次。所有后续请求都没有提供正确的CSS。css文件在后续请求中存在,但它是空的。总之,以下是我在server.js文件中得到的内容: const express = require('express'); const app = exp

我正处于创建Node.js/Express应用程序的早期阶段(这是我比较熟悉的领域),我正在尝试集成SASS来处理样式。我使用的是node-sass中间件包,能够让sass呈现到CSS中并显示出来,但只有在重启服务器后才会显示一次。所有后续请求都没有提供正确的CSS。css文件在后续请求中存在,但它是空的。总之,以下是我在server.js文件中得到的内容:

const express        = require('express');
const app            = express();
const sassMiddleware = require('node-sass-middleware');
const path = require('path')

app.set('views', __dirname + '/views');
app.use(sassMiddleware({
        src: path.join(__dirname, "/sass"),
        dest: path.join(__dirname, "/public/stylesheets"),
        debug: true,
        outputStyle: 'compressed'
    }),
    express.static(path.join(__dirname, 'public'))
);
我使用的是一个基本的静态索引页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SkyCast</title>
    <link rel="stylesheet" type="text/css" href="/style.css">
</head>
<body>
    <h1>Hello world!</h1>
</body>
</html>

天空广播
你好,世界!

当我在服务器上查看编译后的style.css文件时,正确的css就在那里,但是客户端没有接收到它。这是使用Nodemon在本地运行的。非常感谢您的帮助。

在我的头撞了一下之后,我找到了答案。似乎对express.static的调用只有在包含在对app.use的原始调用中时才能正常工作。这样设置:

app.use(sassMiddleware({
    src: path.join(__dirname, 'scss'),
    dest: path.join(__dirname, 'public'),
    debug: true,
    outputStyle: 'compressed'
}), express.static(path.join(__dirname, 'public')));

我成功了。

我用头撞了一下,终于找到了答案。似乎对express.static的调用只有在包含在对app.use的原始调用中时才能正常工作。这样设置:

app.use(sassMiddleware({
    src: path.join(__dirname, 'scss'),
    dest: path.join(__dirname, 'public'),
    debug: true,
    outputStyle: 'compressed'
}), express.static(path.join(__dirname, 'public')));

成功了。

你真是个天才!你知道为什么会有不同吗?你是个天才!你知道为什么会有不同吗?