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
. Что я делаю не так?
13 ответов
попробовать 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'));
у меня такая же проблема. Я решил проблему со следующим кодом:
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
мне нужно более простое решение. Существует ли она?
default.css
должно быть доступно по адресу http://localhost:3001/default.css
на styles
на app.use(express.static(__dirname + '/styles'));
просто говорит express посмотреть в styles
каталог для статического файла для обслуживания. Это не (смущающе), то образует часть пути, на котором он доступен.
на сервере.js:
var express = require("express");
var app = express();
app.use(express.static(__dirname + '/public'));
у вас есть объявление express и app отдельно, создайте папку с именем "public" или как вам нравится, и все же вы можете получить доступ к этой папке. В вашем шаблоне src вы поместили относительный путь от / public (или имя вашей папки destiny к статическим файлам). Остерегайтесь баров на маршрутах.
эта работа для меня:
app.use('*/css',express.static('public/css'));
app.use('*/js',express.static('public/js'));
app.use('*/images',express.static('public/images'));
для обслуживания статических файлов (css, изображений, JS-файлов)всего два шага:
-
передайте каталог css-файлов в встроенный middleware 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
Примечание: чтобы связать файлы 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">
Я использую Bootstrap CSS, JS и шрифты в своем приложении. Я создал папку под названием asset
в корневом каталоге приложения, и поставить все эти папки внутри него. Затем в файл сервера добавлена следующая строка:
app.use("/asset",express.static("asset"));
эта строка позволяет мне загружать файлы, которые находятся в С /asset
префикс пути как: http://localhost:3000/asset/css/bootstrap.min.css
.
теперь в представлениях я могу просто включить CSS и JS, как показано ниже:
<link href="/asset/css/bootstrap.min.css" rel="stylesheet">
это сработало для меня
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')));
попробуйте получить к нему доступ с помощью http://localhost:3001/default.в CSS.
app.use(express.static(__dirname + '/styles'));
вы на самом деле даете ему имя папки, т. е. стили не ваш suburl.
что сработало для меня:
вместо того, чтобы писать app.use(express.static(__dirname + 'public/images'));
в вашем приложении.js
просто писать
app.use(express.static('public/images'));
i.e удалите имя корневого каталога в пути. И тогда вы можете эффективно использовать статический путь в других файлах js, например:
<img src="/images/misc/background.jpg">
надеюсь, что это помогает :)
в дополнение к выше, убедитесь, что статический путь к файлу начинается с / (ex... / assets / css)... для обслуживания статических файлов в любом каталоге над основным каталогом (/main)
Я нахожу свой css-файл и добавляю к нему маршрут:
app.get('/css/MyCSS.css', function(req, res){
res.sendFile(__dirname + '/public/css/MyCSS.css');
});
тогда это, кажется, работает.
Если настройку
myApp
|
|__ public
| |
| |__ stylesheets
| | |
| | |__ style.css
| |
| |___ img
| |
| |__ logo.png
|
|__ app.js
затем,
поместить в приложение.js
app.use('/static', express.static('public'));
и обратитесь к вашему стилю.Усс: (в некоторых .файл мопса):
link(rel='stylesheet', href='/static/stylesheets/style.css')