Express-js не может получить мои статические файлы, почему?
Я сократил свой код до самого простого приложения express-js, которое я мог бы сделать:
var express = require("express"),
app = express.createServer();
app.use(express.static(__dirname + '/styles'));
app.listen(3001);
Мой каталог выглядит следующим образом:
static_file.js
/styles
default.css
Но когда я обращаюсь к http://localhost:3001/styles/default.css
, я получаю следующую ошибку:
Cannot GET / styles /
default.css
Я использую express 2.3.3
и node 0.4.7
. Что я делаю неправильно?
Ответы
Ответ 1
Попробуйте http://localhost:3001/default.css
.
Чтобы иметь /styles
в URL вашего запроса, используйте:
app.use("/styles", express.static(__dirname + '/styles'));
Посмотрите примеры на на этой странице:
//Serve static content for the app from the "public" directory in the application directory.
// GET /style.css etc
app.use(express.static(__dirname + '/public'));
// Mount the middleware at "/static" to serve static content only when their request path is prefixed with "/static".
// GET /static/style.css etc.
app.use('/static', express.static(__dirname + '/public'));
Ответ 2
У меня та же проблема. Я решил проблему со следующим кодом:
app.use('/img',express.static(path.join(__dirname, 'public/images')));
app.use('/js',express.static(path.join(__dirname, 'public/javascripts')));
app.use('/css',express.static(path.join(__dirname, 'public/stylesheets')));
Пример статического запроса:
http://pruebaexpress.lite.c9.io/js/socket.io.js
Мне нужно более простое решение. Он существует?
Ответ 3
default.css
должен быть доступен в http://localhost:3001/default.css
styles
в app.use(express.static(__dirname + '/styles'));
просто говорит express, чтобы посмотреть в каталоге styles
для статического файла для обслуживания. Он не (смущающе) затем образует часть пути, на котором он доступен.
Ответ 4
Эта работа для меня:
app.use('*/css',express.static('public/css'));
app.use('*/js',express.static('public/js'));
app.use('*/images',express.static('public/images'));
Ответ 5
В вашем server.js:
var express = require("express");
var app = express();
app.use(express.static(__dirname + '/public'));
Вы объявили express и app отдельно, создали папку с именем public или как вам нравится, и все же вы можете получить доступ к этой папке. В вашем шаблоне src вы добавили относительный путь из /public (или имя вашей папки в статических файлах). Остерегайтесь баров на маршрутах.
Ответ 6
Я использую Bootstrap CSS, JS и Fonts в своем приложении. Я создал папку с именем asset
в корневом каталоге приложения и поместил в нее всю эту папку. Затем в файл сервера добавлена следующая строка:
app.use("/asset",express.static("asset"));
Эта строка позволяет мне загружать файлы, находящиеся в каталоге asset
, из префикса пути /asset
, например: http://localhost:3000/asset/css/bootstrap.min.css
.
Теперь в представлениях я могу просто включить CSS и JS, как показано ниже:
<link href="/asset/css/bootstrap.min.css" rel="stylesheet">
Ответ 7
для обслуживания статических файлов (css, images, js files) всего два шага:
-
передать каталог css файлов для создания промежуточного программного обеспечения express.static
var express = require('express');
var app = express();
/*public is folder in my project directory contains three folders
css,image,js
*/
//css =>folder contains css file
//image=>folder contains images
//js =>folder contains javascript files
app.use(express.static( 'public/css'));
-
для доступа к файлам или изображениям css просто введите url http://localhost:port/filename.css ex: http://localhost:8081/bootstrap.css
note:, чтобы связать файлы css с html, просто введите <link href="file_name.css" rel="stylesheet">
если я напишу этот код
var express = require('express');
var app = express();
app.use('/css',express.static( 'public/css'));
для доступа к статическим файлам просто введите url: localhost: port/css/filename.css
ex: http://localhost:8081/css/bootstrap.css
отметить, чтобы связать css файлы с html, просто добавьте следующую строку
<link href="css/file_name.css" rel="stylesheet">
Ответ 8
Что для меня работало:
Вместо написания app.use(express.static(__dirname + 'public/images'));
в вашем приложении app.js
Просто напишите
app.use(express.static('public/images'));
i. удалите имя корневого каталога в пути. И тогда вы можете эффективно использовать статический путь в других js файлах, например:
<img src="/images/misc/background.jpg">
Надеюсь, что это поможет:)
Ответ 9
этот работал у меня
app.use(express.static(path.join(__dirname, 'public')));
app.use('/img',express.static(path.join(__dirname, 'public/images')));
app.use('/shopping-cart/javascripts',express.static(path.join(__dirname, 'public/javascripts')));
app.use('/shopping-cart/stylesheets',express.static(path.join(__dirname, 'public/stylesheets')));
app.use('/user/stylesheets',express.static(path.join(__dirname, 'public/stylesheets')));
app.use('/user/javascripts',express.static(path.join(__dirname, 'public/javascripts')));
Ответ 10
Я нахожу свой файл CSS и добавляю к нему маршрут:
app.get('/css/MyCSS.css', function(req, res){
res.sendFile(__dirname + '/public/css/MyCSS.css');
});
Тогда это похоже на работу.
Ответ 11
Попробуйте получить его с помощью http://localhost:3001/default.css.
app.use(express.static(__dirname + '/styles'));
Фактически вы указываете имя папки, то есть стили, а не ваш suburl.
Ответ 12
В дополнение к выше, убедитесь, что статический путь к файлу начинается с /(ex.../assets/css)... для обслуживания статических файлов в любом каталоге выше основного каталога (/main)
Ответ 13
если ваша настройка
myApp
|
|__ public
| |
| |__ stylesheets
| | |
| | |__ style.css
| |
| |___ img
| |
| |__ logo.png
|
|__ app.js
затем,
положить в app.js
app.use('/static', express.static('public'));
и обратитесь к вашему style.css: (в некотором файле .pug):
link(rel='stylesheet', href='/static/stylesheets/style.css')
Ответ 14
- Создайте папку с публичным именем в проекте Nodejs
папки.
- Поместите файл index.html в папку проекта Nodejs.
- Разместите все сценарии и CSS файлы в открытом доступе.
папки.
Используйте app.use( express.static('public'));
и в index.html
правильный путь сценариев к <script type="text/javascript" src="/javasrc/example.js"></script>
И теперь все работает нормально.