Javascript 如何在我的ejs文件中包含引导文件?

Javascript 如何在我的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

因此,我使用npm安装了引导程序-bootstrap@3但是,当我试图在应用程序中包含来自节点_模块的bootstrap.min.css文件时,它在我的控制台中显示此错误:

错误消息

在网络选项卡中,它显示

在引导源上找不到404

以下是我的项目结构上的一些图像:

项目文件夹结构

包含引导文件的ejs代码

这里有什么问题?

为什么不使用CDN

<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内置中间件功能来解决这个问题

  • 创建名为public的目录
  • 将以下代码添加到app.js文件中

    应用程序使用(express.static('public'))

  • 现在,您可以将引导文件放在这个目录(或子目录)中,并将它们链接到公共目录

  • 你可以在这里找到更多信息。

    因为您试图从服务器访问静态文件,而您的
    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的,因此如果您没有运行节点服务器,它就没有多大意义