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

  1. Создайте папку с публичным именем в проекте Nodejs
    папки.
  2. Поместите файл index.html в папку проекта Nodejs.
  3. Разместите все сценарии и CSS файлы в открытом доступе. папки.
  4. Используйте app.use( express.static('public'));

  5. и в index.html правильный путь сценариев к <script type="text/javascript" src="/javasrc/example.js"></script>

И теперь все работает нормально.