Могут ли файлы ejs, представленные на узле, использовать автономную загрузку? - PullRequest
0 голосов
/ 19 января 2019

Я новичок в разработке узлов и полных стеков и надеюсь, что я задам этот вопрос правильно, а не небрежно или оскорбительно для вашего конкретного уровня понимания.

Моя среда разработки подключена к Интернету, производства не будет, и я хочу использовать bootstrap.css с узлом.Apache / httpd не является опцией в производственном процессе.

Локальное тестирование начальной загрузки было сложной задачей, правильный каталог для файла css считается правильным.

Основной каталог в CENTOS 7 - это myapp, содержащий app0.js, модули node_modules с espress и body-parser и все зависимости, а также каталог views, содержащий grid.ejs.

myapp/
    app0.js
    node_modules
    views/
        grid.ejs
    public/
        bootstrap.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 работает (1), когда на него ссылаются в Интернете, - который я не могу использовать в production (2) из ​​httpd в моей среде разработки через http-код, но не из файла ejs.

Примечание: я могу достичь начальной загрузки с узла, потому что было 404 ошибки, когда он был недоступен, показывая с терминала, где был запущен узел.По крайней мере, после 12 часов попыток понять это, я в тупике.К сожалению, с коротким графиком времени, чтобы найти решение, я обращаюсь к вам, хорошие читатели!

App0.js // setup

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 "загрузчик не работает"

1 Ответ

0 голосов
/ 19 января 2019

Вы должны определить в своем файле app0.js путь public, из которого вы собираетесь обслуживать статические файлы. Попробуйте следующий файл app0.js, требующий модуль path и использующий express.static после bodyParser.json():

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">
...