无法使用 Node Js App 在句柄栏模板中包含 CSS 样式

Posted

技术标签:

【中文标题】无法使用 Node Js App 在句柄栏模板中包含 CSS 样式【英文标题】:Unable to include CSS styling in handleBar templates with Node Js App 【发布时间】:2021-06-12 21:48:53 【问题描述】:

我有一个基于 Node Js-Express 的应用程序,并使用把手模板来设计 Nodemailer html 正文的结构。我尝试以多种方式包含 CSS 文件,但仍然没有任何样式应用于 HTML。

我目前的项目结构是这样的:

- backend
  - src
  - helpers
    - templates
      - emailTemplate.handlebars
  - public
    - styles.css
  - app.js

app.js 被定义为像这样使用把手:

const express = require('express');
const app = express();

app.use(express.static(path.join(__dirname, '/public')));

车把模板如下所示:

<html>
<head>
    <title>Update Project Details</title>
    #each css
    <link rel="stylesheet" href="../../public/this">
    /each
</head>

<body>
    <h1>headerMessage</h1>
    <p>message</p>
    <p>
        bodyText
    <div class="row">
        <div class="side">
            <button class="edit"> Edit Details </button>
        </div>
        <div class="main">
            <button class="archive"> Archive Product </button>
        </div>
    </div>
</body>
</html>

当 nodemailer 运行和接收邮件时,HTML 内容从邮件正文内的 HandleBar 模板呈现,但没有任何 CSS 或样式。

我还尝试将 CSS 文件保存在与模板相同的文件夹中,但没有成功。不知道我哪里错了。任何解决相同问题的帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我在这里看到的唯一问题是样式表与 DOM 的实际链接。如果您查看 app.js 中的 app.use,它会显示:

app.use(express.static(path.join(__dirname, '/public')));

这意味着任何所谓的“公共”文件、图像、本地 js、样式都存储在公共文件夹中,这是所有标题的新相对路径。因此,无论您的 ejs 或 html 文件在哪里,样式表的相对路径总是从您的公用文件夹的顶层向下。这使它更具动态性,您唯一需要更改的是:

<link rel="stylesheet" href="../../public/this">

到:

<link rel="stylesheet" href="this">

就这么简单。希望这是有道理的,编码愉快!

【讨论】:

感谢您的解释。改了之后好像还是不行:/ @enthu_dev 嘿,试试&lt;link rel="stylesheet" href="style.css"&gt; 我不明白你所说的this 标签是什么意思,所以只需将其与本评论的第一部分一起清除即可。 还是不行。虽然我发现了一个奇怪的弯曲。我在浏览器中检查了电子邮件正文 HTML,似乎连 class="" 都从每个 或任何 HTML 标记中删除,忘记包括 CSS。不明白为什么会这样。在检查代码时至少应该有类名。 没问题,感谢您对此的调查。 嘿,你找到解决办法了吗?

以上是关于无法使用 Node Js App 在句柄栏模板中包含 CSS 样式的主要内容,如果未能解决你的问题,请参考以下文章

Node.js:Jest + redis.quit() 但打开句柄警告仍然存在

Node.js开发 ---- Jade 模板引擎使用

在 Node.js 中包含 CSS 和 JS 文件

我应该在 App.js 中包含哪些组件?

在刀片模板中包含 js 文件

Node.js 将响应对象句柄的句柄传递给子进程