Javascript 如何在我的ejs文件中包含引导文件?
因此,我使用npm安装了引导程序-bootstrap@3但是,当我试图在应用程序中包含来自节点_模块的bootstrap.min.css文件时,它在我的控制台中显示此错误: 错误消息 在网络选项卡中,它显示 在引导源上找不到404 以下是我的项目结构上的一些图像: 项目文件夹结构 包含引导文件的ejs代码 这里有什么问题?为什么不使用CDNJavascript 如何在我的ejs文件中包含引导文件?,javascript,css,node.js,twitter-bootstrap,ejs,Javascript,Css,Node.js,Twitter Bootstrap,Ejs,因此,我使用npm安装了引导程序-bootstrap@3但是,当我试图在应用程序中包含来自节点_模块的bootstrap.min.css文件时,它在我的控制台中显示此错误: 错误消息 在网络选项卡中,它显示 在引导源上找不到404 以下是我的项目结构上的一些图像: 项目文件夹结构 包含引导文件的ejs代码 这里有什么问题?为什么不使用CDN <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
看起来您正在根据ejs文件的位置构建相对路径,实际上您需要做的是查看ejs视图的映射路径,并将其设置为相对形式。
在您的例子中,它是
header.ejs
,假设您是从根页面为它提供服务,它应该是。/node\u modules
,但如果您这样做,它将在不同的页面中中断,如/posts/foo,因此解决问题的最佳方法是将css文件保存在/public/css文件夹中,并将public文件夹添加为静态文件夹,并使用类似于/css/bootstrap.min.css
在本教程之后,我遇到了同样的问题。您可以通过express.static内置中间件功能来解决这个问题
因为您试图从服务器访问静态文件,而您的
bootstrap.min.css
是一个静态文件,我们知道,如果您使用Express,NodeJ提供了一种服务静态文件的方法。
例如,您可以使用以下代码为名为public的目录中的图像、CSS文件和JavaScript文件提供服务:
app.use(express.static('public'))
你应该知道:
Express查找相对于静态目录的文件,因此
静态目录的名称不是URL的一部分
我遇到了同样的问题,并决定尝试使用诸如express.static()之类的中间件 警告:当我声明express.static(“public”)时,我将其放在app.js文件的底部,但它对我无效。所以我把它调高了,它就起作用了。。这是一个例子
"use strict";
const express = require("express"),
app = express();
const layouts = require("express-ejs-layouts");
app.set("view engine", "ejs");
app.set("port", process.env.PORT || 3000);
app.use(
express.urlencoded({
extended: false
})
);
app.use(express.json());
app.use(layouts);
app.use(express.static("public"));
app.get("/", (req, res) => {
res.render("index");
});
app.listen( app.get("port"), () => {console.log(`Server running at http://localhost:${app.get("port")}`);
});
然后在公用文件夹(我的css、js和图像所在的位置)中,我将boostrap.css放在那里
在layout.ejs中,我有一个html文件,并将其称为
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=0.8, maximum-scale=1">
<title>School of business</title>
<link rel="stylesheet" href="/css/bootstrap.css"> <!-- BOOTSTRAP -->
<link rel="stylesheet" href="/css/main.css">
</head>
<body>
商学院
这对我来说很有效,使用了引导CDN head.ejs
> <!-- views/partials/head.ejs --> <meta charset="UTF-8" /> <title>Super
> Awesome</title>
>
> <!-- Latest compiled and minified CSS --> <link rel="stylesheet"
> href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
> integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
> crossorigin="anonymous" />
<!DOCTYPE html>
<html>
<head>
<%- include ('../partials/head') %>
</head>
<body>
<div class="jumbotron">
<%- include ('../partials/form') %>
</div>
</body>
</html>
超级
>棒极了
>
>href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
>integrity=“sha384-BVYISIFEK1DGMJRAKYCUHAHRG32OMUCWW7ON3RYDG4VA+PmSTsz/K68vbdEjh4u”
>crossorigin=“匿名”/>
将其包含在index.ejs中
> <!-- views/partials/head.ejs --> <meta charset="UTF-8" /> <title>Super
> Awesome</title>
>
> <!-- Latest compiled and minified CSS --> <link rel="stylesheet"
> href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
> integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
> crossorigin="anonymous" />
<!DOCTYPE html>
<html>
<head>
<%- include ('../partials/head') %>
</head>
<body>
<div class="jumbotron">
<%- include ('../partials/form') %>
</div>
</body>
</html>
我的office笔记本电脑上的引导cdn链接被阻止(显示连接隧道错误),因此我尝试使用npm软件包以艰难的方式将其添加到“视图”文件夹中,您可以使用../bootstrap.min.cssb访问。但是,如果我想预览我的ejs
,而不运行节点服务器,此文件无法访问bootstrap.min.css
。是的,但EJS是用于SSR的,因此如果您没有运行节点服务器,它就没有多大意义