статические файлы не загружаются в моем проекте - PullRequest
0 голосов
/ 16 января 2019

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

app.use('/assets', express.static('public')); Похоже. это выражение не работает.

app.js file.

var express = require('express');
var todoController = require('./controllers/todoControllers');
var app = express();

//set up template engine
app.set('view engine','ejs');

// static files
app.use('/assets', express.static('public'));

//fire to controllers

todoController(app);

//listen to port
app.listen(3000); 
console.log('you are listening to port: 3000');

todo.ejs файл

<html>
<head>
    <title>Todo List</title>
    <link rel="stylesheet" href="/assets/styles.css">
    <script
          src="https://code.jquery.com/jquery-1.12.4.min.js"
          integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
          crossorigin="anonymous"></script>
    <link rel="stylesheet" href="/assets/styles.css" type="text/css" />      
</head>
<body>
    <h1>My todo list</h1>
    <div id="todo-table">
        <form>
            <input type="text" name="item" placeholder="Add new item..." required />
            <button type ="submit">Add item</button>    
        </form>
        <ul>
            <% for(var i=0;i<todos.length;i++){ %>
                <li><%= todos[i].item %></li>
            <% } %>
        </ul>
    </div>
     <script src="..public/assets/todo-list.js"></script>    
   </body>
  </html>

когда я захожу на localhost: 3000 и осматриваю страницу, возникает ошибка, что файл CSS не загружен, а файл JS не загружен.

Ответы [ 3 ]

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

Вам нужно присоединиться к пути,

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

Для получения дополнительной информации, пожалуйста, обращайтесь: https://expressjs.com/en/starter/static-files.html Также проверьте, пытаетесь ли вы создать виртуальный путь.

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

Сначала требуется путь var path = require('path');

Во-вторых, если assets - это папка, в которую вы хотите отправить свое содержимое, и она также находится с файлом app.js в той же папке, то

app.use(express.static(path.resolve(__dirname, 'assets')));

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

Вы передаете маршрут /assets на ваше статическое промежуточное ПО и перенаправляете его в публичный каталог. Но в вашем HTML вы пытаетесь получить прямой доступ к URL /public/assets. Не делай этого; просто укажите свой HREF на /assets/styles.css и статическое промежуточное ПО правильно перенаправит его в публичный каталог для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...