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 . Что я делаю не так?

Попробуйте 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 для статического файла для обслуживания. Он не (смущающе), а затем образует часть пути, на котором он доступен.

В вашем server.js:

 var express = require("express"); var app = express(); app.use(express.static(__dirname + '/public')); 

Вы объявляете express и приложение отдельно, создавайте папку с именем «public» или по своему усмотрению, и все же вы можете получить доступ к этой папке. В шаблоне src вы поместили относительный путь из / public (или имя вашей папки в статические файлы). Остерегайтесь баров на маршрутах.

Эта работа для меня:

 app.use('*/css',express.static('public/css')); app.use('*/js',express.static('public/js')); app.use('*/images',express.static('public/images')); 

для обслуживания статических файлов (css, images, js files) всего два шага:

  1. передать каталог 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')); 
  2. для доступа к файлам или изображениям css просто введите URL-адрес http: // localhost: port / filename.css ex: http: // localhost: 8081 / bootstrap.css

note: для ссылки css-файлов на html просто введите

если я напишу этот код

 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

note, чтобы связать css-файлы с html, просто добавьте следующую строку

  

Я использую Bootstrap CSS, JS и Fonts в своем приложении. Я создал папку с именем asset в корневой директории приложения и поместил в нее всю эту папку. Затем в файле сервера добавлена ​​следующая строка:

 app.use("/asset",express.static("asset")); 

Эта строка позволяет мне загружать файлы, находящиеся в каталоге asset из префикса пути /asset например: http://localhost:3000/asset/css/bootstrap.min.css .

Теперь в представлениях я могу просто включить CSS и JS, как показано ниже:

  

этот работал для меня

 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')); в вашем приложении app.js

Просто напишите app.use(express.static('public/images'));

т.е. удалить корневое имя каталога в пути. И тогда вы можете эффективно использовать статический путь в других js-файлах, например:

  

Надеюсь это поможет 🙂

В дополнение к выше, убедитесь, что статический путь к файлу начинается с / (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 

тогда,
положить в app.js

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

и обратитесь к вашему style.css: (в некотором .pug-файле):

 link(rel='stylesheet', href='/static/stylesheets/style.css') 
  • Расширить объект Express Request с помощью TypScript
  • nodejs, как читать нажатия клавиш от stdin
  • Укажите путь к node_modules в package.json
  • Как получить путь к текущему скрипту с помощью Node.js?
  • Почему node.js обрабатывает только шесть запросов одновременно?
  • Выполнить и получить вывод команды оболочки в node.js
  • Как удалить базу данных с помощью Mongoose?
  • JWT (JSON Web Token) автоматическое продление срока действия
  • Время ожидания ответа Express.js
  • E11000 дублирует ключевой индекс ошибки в mongodb mongoose
  • Загрузите модуль node.js из строки в памяти
  • Давайте будем гением компьютера.