Expressjs не распознает статические файлы - PullRequest
2 голосов
/ 03 апреля 2012

У меня есть приложение nodejs, и я использую expressjs. Я определил мой статический каталог, но когда я обращаюсь к нему, он не загружается. Мой экспресс-конфиг:

var app = express.createServer().listen(8001);
app.configure(function(){
      app.use(express.methodOverride());
      app.use(express.bodyParser());
      app.use(app.router);
      app.use('/public', express.static(__dirname + '/public'));
      app.use(express.cookieParser());
      app.use(express.session({ secret: "appsession" }));
      app.use(express.errorHandler({showStack: true, dumpExceptions: true}));
      app.set('views', __dirname + '/views');
      app.set('view engine', 'hbs');
});

Внутри моего каталога /public есть 3 папки: css, js и img. Внутри CSS у меня есть style.css. Когда я пытаюсь получить к нему доступ напрямую через http://localhost:8001/public/css/style.css, я получаю: Cannot GET /public/css/style.css

Есть идеи, что я могу делать не так?

Спасибо!

EDIT:

Похоже, это связано с настройкой моих маршрутов. Я делаю это так:

     var routes = require('./routes')(db);
     pp.get('/', routes.index);

Тогда в моем файле index.js у меня есть:

module.exports = function(db) {
    return {

        index: function(req, res, next) { 
                res.render('index');
            }
         }
     }

У меня включена обработка ошибок, но когда я использую маршрутизацию таким образом, она не использует экспресс-обработку ошибок, однако, если я ее устраняю, она делает.

Ответы [ 4 ]

4 голосов
/ 03 апреля 2012

Статическое промежуточное ПО http настраивается следующим образом:

app.use(express.static(__dirname + '/public'));

И получить файл в ./public/css/style.css с URL:

"/css/style.css"

public не является частью пути, когда вы фактически запрашиваете файл.

3 голосов
/ 03 апреля 2012

Измените свой статический обработчик на это:

app.use('/public/css', express.static(__dirname + '/public/css'));

Тогда http://localhost:8001/public/css/style.css должен получить то, что вы хотите

Полный пример приложения, которое позволяет curl http://localhost:8001/public/css/style.css:

app.js
|-public
  |-css
    |-style.css

var express = require("express"),
    app = express.createServer();
app.use('/public/css', express.static(__dirname + '/public/css'));
app.listen(8001);
0 голосов
/ 13 февраля 2014

Я понял.

У меня на хосте работают две службы.Django запускает сайт в корне: http://myURL.com,, а затем Node работает с http://myURL.com/node

Конфигурация в порядке со всеми файлами в Node.Файл index.html запрашивается нормально, но index.html, когда он запрашивает таблицы стилей и статические файлы, запрос перехватывается Django, прежде чем он попадает в Node.Django увидел файл и не знал, что это такое, и вернул ошибку 404.

Отключив Django от перехвата запросов к этим файлам, все работает нормально.

0 голосов
/ 15 июля 2012

столкнулся с той же проблемой нашел ответ здесь

https://github.com/senchalabs/connect/issues/298

Когда вы пытаетесь использовать вложенные файлы, это как-то теряется,

написано, что исправлено на трекере год назад, однако я попробовал сегодня и работал нормально

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