【问题标题】:Express app with node-sass-middleware only serving correct stylesheet once使用 node-sass-middleware 的 Express 应用程序只提供一次正确的样式表
【发布时间】:2017-04-12 15:08:46
【问题描述】:

我正处于设置 Node.js/Express 应用程序的早期阶段(我比较喜欢这个领域),我正在尝试集成 SASS 来处理样式。我正在使用 node-sass-middleware 包,并且能够让 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 在本地运行的。非常感谢任何帮助。

【问题讨论】:

    标签: javascript css node.js express


    【解决方案1】:

    在我对此提出质疑后,我找到了答案。似乎只有在对 app.use 的原始调用中包含对 express.static 的调用时,它才能正常工作。像这样设置它:

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

    成功了。

    【讨论】:

    • 你是个天才!你知道为什么这会有所不同吗?
    猜你喜欢
    • 2015-09-16
    • 2023-04-02
    • 2022-09-23
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2019-07-19
    • 2020-07-02
    • 2023-04-03
    相关资源
    最近更新 更多