【问题标题】:Can node presented ejs files use offline bootstrap?节点提供的 ejs 文件可以使用离线引导程序吗?
【发布时间】:2019-01-20 00:19:03
【问题描述】:

我是节点和全栈开发的新手,希望我能正确地提出这个问题,而不是粗心或冒犯您的特定理解水平。

我的开发环境是联网的,生产环境不会联网,我想将 bootstrap.css 与 node 一起使用。 Apache/httpd 在生产环境中不是一个选项。

在本地测试引导程序具有挑战性,css 文件的正确目录被认为是正确的。

CENTOS 7 的主目录是 myapp,包含 app0.js、带有 espress 和 body-parser 的 node_modules 以及所有依赖项,以及包含 grid.ejs 的 views 目录。

我的应用程序/ app0.js 节点模块 意见/ 网格.ejs 上市/ 引导程序.css

这里是 grid.html(适用于 apache):

<!DOCTYPE html>
<html>

<head>
  <title>Bootstrap Grid Test</title>
  <link rel="stylesheet" type="text/css" href="bootstrap.css">

  <style type="text/css">
    .pink {
      background: yellow;
      border: 3px solid red;
  </style>  
</head>

<body>
  <div class="row">
    <div class="col-lg-2 pink"><center>2 columns </center></div>
    <div class="col-lg-7 pink"><center>7 columns </center></div>
    <div class="col-lg-3 pink"><center>3 columns </center></div>
  </div>

</body>

</html>

这是 apache 为 grid.html 显示的内容:

https://imgur.com/VanVZJn "使用 httpd 引导"

但是 app0.js 没有!

所以 bootstrap.css 在 Internet 上引用时有效 (1) - 我无法通过 http 代码在我的开发环境中从 httpd 在生产中使用 (2) 但不是来自 ejs 文件。

注意:我能够从节点访问引导程序,因为从启动节点的终端显示无法访问时出现 404 错误。在至少 12 个小时试图理解这一点之后,我被难住了。遗憾的是,解决方案的时间很短,我向各位优秀的读者求助!

App0.js //设置

var express = require('express'),
    app = express(),
    bodyParser = require('body-parser')

app.set('view engine','ejs');
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

app.get("/grid", function(req, res, next){
    res.render("grid")
});

app.listen(3000,function(){
    console.log("serving test demo on port 3000")
});

views/grid.ejs

<!DOCTYPE html>
<html>

<head>  
  <title>Bootstrap Grid System</title>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="public/bootstrap.css">
  <style type="text/css">
      .pink {
          background: yellow;
          border: 3px solid red;
       }  
  </style>
</head>

<body>
    <div class="row">
        <div class="col-lg-2 pink"><center>2</center></div>
        <div class="col-lg-7 pink"><center>7</center></div>
        <div class="col-lg-7 pink"><center>3</center></div>
    </div>

</body>

</html>

此处显示:

https://imgur.com/ZLOgZKT“引导不工作”

【问题讨论】:

    标签: node.js twitter-bootstrap ejs offline


    【解决方案1】:

    您必须在您的 app0.js 文件中定义 public 路径,您将从该路径中提供静态文件。尝试以下 app0.js 文件,该文件需要 path 模块并在 bodyParser.json() 之后使用 express.static

    var express = require('express'),
        app = express(),
        bodyParser = require('body-parser'),
        path = require('path')
    
    app.set('view engine','ejs');
    app.use(bodyParser.urlencoded({ extended: false }))
    app.use(bodyParser.json())
    app.use(express.static(path.join(__dirname, 'public')));
    
    app.get("/grid", function(req, res, next){
        res.render("grid")
    });
    
    app.listen(3000,function(){
        console.log("serving test demo on port 3000")
    });
    


    您的 grid.ejs 文件以这种方式链接引导文件:

    <link rel="stylesheet" type="text/css" href="/bootstrap.css">
    

    【讨论】:

    • 优秀!我似乎在分析的不同点上几乎都有碎片。但显然不能把它放在一起。但是 path=require('path') 不在我的雷达上。非常感谢!!!
    • 我试图理解一件事 Dimitris... 节点之前为引导程序给出了 404 错误,而不是在我开始写这个问题时。那么就好像它不再有错误,但它仍然没有读取css文件,这是正确的理解吗?
    • 我不知道您为什么没有收到 404 错误。无论如何,您的 express.js 应用程序找不到 css 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    相关资源
    最近更新 更多