2015-07-12 4 views
0

Я пытаюсь использовать таблицы стилей и javascript-файлы в моем проекте node.js, который использует express и ejs.Включая файлы css и js на node.js + express + ejs

моя структура:

public/ 
    -- css/ 
    -- js/ 
    -- images/ 

и мой chat.ejs файл:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <% include ../partials/head %> 
</head> 
<body> 

.. content .. 

    <% include ../partials/footer %> 

</body> 
</html> 

и в моем частичных/head.ejs есть код

<link href="public/css/custom.css" rel="stylesheet"> 

и он должен загрузить но это не так. Btw my main chat.js:

var express = require('express'); 
var app = express(); 

// set the view engine to ejs 
app.set('view engine', 'ejs'); 
app.use(express.static(__dirname + '/public')); 

// index page 
app.get('/', function(req, res) { 
    res.render('pages/chat'); 
}); 

app.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 

так как правильно его использовать?

ответ

2

Папка public не будет на самом деле быть частью пути URL доступны для клиента:

<link href="/css/custom.css" rel="stylesheet"> 

Путь вы даете express.static() будет сочетаться с URL-путь к действию:

// GET /css/custom.css 
(__dirname + '/public') + '/css/custom.css' 

Таким образом, при запросе public/css/custom.css, express.static() попытается найти:

// GET /public/css/custom.css 
(__dirname + '/public') + '/public/css/custom.css' 

Ожидая структуру папок, а не быть:

public/ 
    -- public/ 
     -- css/ 
     -- js/ 
     -- images/ 
Смежные вопросы