Не работает express static

Express-js не может получить мои статические файлы, почему?

я сократил свой код до самого простого приложения express-js, которое я мог бы сделать:

мой каталог выглядит так:

но когда я получаю доступ http://localhost:3001/styles/default.css Я получаю следующую ошибку:

Я использую express 2.3.3 и node 0.4.7 . Что я делаю не так?

13 ответов

иметь /styles в URL вашего запроса используйте:

посмотрите на примеры на на этой странице:

у меня такая же проблема. Я решил проблему со следующим кодом:

статический запрос, например:

мне нужно более простое решение. Существует ли она?

default.css должно быть доступно по адресу http://localhost:3001/default.css

на styles на app.use(express.static(__dirname + ‘/styles’)); просто говорит express посмотреть в styles каталог для статического файла для обслуживания. Это не (смущающе), то образует часть пути, на котором он доступен.

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

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

для обслуживания статических файлов (css, изображений, JS-файлов)всего два шага:

передайте каталог css-файлов в встроенный middleware express.static

Примечание: чтобы связать файлы css с html, просто введите

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

для доступа к статическим файлам просто введите url: localhost: port/css/filename.стиль CSS ex:http://localhost:8081/css/bootstrap.в CSS

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

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

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

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

Источник

Express-js не может получить мои статические файлы, почему?

я сократил свой код до самого простого приложения express-js, которое я мог бы сделать:

мой каталог выглядит так:

но когда я получаю доступ http://localhost:3001/styles/default.css Я получаю следующую ошибку:

Я использую express 2.3.3 и node 0.4.7 . Что я делаю не так?

13 ответов:

иметь /styles в URL вашего запроса используйте:

у меня та же проблема. Я решил проблему с помощью следующего кода:

статический запрос, например:

мне нужно более простое решение. Существует ли она?

default.css должно быть доступно по адресу http://localhost:3001/default.css

The styles на app.use(express.static(__dirname + ‘/styles’)); просто говорит экспресс, чтобы посмотреть в styles каталог для статического файла для обслуживания. Это не (смущает), а затем формирует часть пути, на котором он доступен.

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

для обслуживания статических файлов (css, изображения, JS файлы)всего два шага:

передайте каталог css-файлов в встроенный middleware express.статика

Примечание: чтобы связать css файлы с html просто введите

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

для доступа к статическим файлам просто введите url: localhost: port / css / filename.стиль CSS например:http://localhost:8081/css/bootstrap.css

Примечание чтобы связать css файлы с html просто добавьте следующую строку

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

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

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

Источник

Express-js can’t GET my static files, why?

I’ve reduced my code to the simplest express-js app I could make:

My directory look like this:

Yet when I access http://localhost:3001/styles/default.css I get the following error:

I’m using express 2.3.3 and node 0.4.7 . What am I doing wrong?

19 Answers 19

To have /styles in your request URL, use:

Look at the examples on this page:

I have the same problem. I have resolved the problem with following code:

Static request example:

I need a more simple solution. Does it exist?

default.css should be available at http://localhost:3001/default.css

The styles in app.use(express.static(__dirname + ‘/styles’)); just tells express to look in the styles directory for a static file to serve. It doesn’t (confusingly) then form part of the path it is available on.

This work for me:

In your server.js :

You have declared express and app separately, create a folder named ‘public’ or as you like, and yet you can access to these folder. In your template src, you have added the relative path from /public (or the name of your folder destiny to static files). Beware of the bars on the routes.

I am using Bootstrap CSS, JS and Fonts in my application. I created a folder called asset in root directory of the app and place all these folder inside it. Then in server file added following line:

This line enables me to load the files that are in the asset directory from the /asset path prefix like: http://localhost:3000/asset/css/bootstrap.min.css .

Now in the views I can simply include CSS and JS like below:

What worked for me is:

Instead of writing app.use(express.static(__dirname + ‘public/images’)); in your app.js

Simply write app.use(express.static(‘public/images’));

i.e remove the root directory name in the path. And then you can use the static path effectively in other js files, For example:

Hope this helps 🙂

to serve static files (css,images,js files)just two steps:

pass the directory of css files to built in middleware express.static

note: to link css files to html just type

if i write this code

to access the static files just type in url:localhost:port/css/filename.css ex:http://localhost:8081/css/bootstrap.css

note to link css files with html just add the following line

this one worked for me

You are actually giving it the name of folder i.e. styles not your suburl.

I find my css file and add a route to it:

Then it seems to work.

Webpack makes things awkward

As a supplement to all the other already existing solutions:

First things first: If you base the paths of your files and directories on the cwd (current working directory), things should work as usual, as the cwd is the folder where you were when you started node (or npm start , yarn run etc).

If you are using webpack, __dirname behavior will be very different, depending on your node.__dirname settings, and your webpack version:

  1. In Webpack v4, the default behavior for __dirname is just / , as documented here.
    • In this case, you usually want to add this to your config which makes it act like the default in v5, that is __filename and __dirname now behave as-is but for the output file:
    • This has also been discussed here.
  2. In Webpack v5, per the documentation here, the default is already for __filename and __dirname to behave as-is but for the output file, thereby achieving the same result as the config change for v4.

Example

For example, let’s say:

  • you want to add the static public folder
  • it is located next to your output (usually dist ) folder, and you have no sub-folders in dist , it’s probably going to look like this

(important: again, this is independent of where your source file is, only looks at where your output files are!)

More advanced Webpack scenarios

Things get more complicated if you have multiple entry points in different output directories, as the __dirname for the same file might be different for output file (that is each file in entry ), depending on the location of the output file that this source file was merged into, and what’s worse, the same source file might be merged into multiple different output files.

You probably want to avoid this kind of scenario scenario, or, if you cannot avoid it, use Webpack to manage and infuse the correct paths for you, possibly via the DefinePlugin or the EnvironmentPlugin .

Источник

Сервер Express.js внезапно не работает — Не удается получить /

Мой чрезвычайно простой экспресс-сервер, использующий node.js, внезапно перестал работать. Он работал нормально (пока только тестировал его на моей локальной машине), затем я попытался использовать browserify (который не работал, и я в итоге удалил его), и когда я вернулся на сайт, я получил сообщение Cannot GET / error ,

Я попытался удалить browserify, переустановить его, удалить и заново установить два пакета npm, которые я использую, даже удалив все мои папки и начав с нуля (просто вставив код в пару файлов). Независимо от того, что я все еще получаю ту же ошибку, и я понятия не имею, почему. Если я открываю index.html, он все равно открывается идеально, а когда я запускаю свой сервер (index.js), он не выдает никаких ошибок и, кажется, слушает, как и положено.

Сервер на данный момент:

Мои файлы в настоящее время структурированы так:

  • общественности
    • активы (только изображения) node_modules index.html index.js Пакет — lock.json styles.css

2 ответа

Поскольку путь вашего сервера — /public/index.js , path.join(__dirname, ‘public’) разрешается в /Users/. /your_directory/public/public . Express не может найти такой каталог, поэтому он продолжает работу по конвейеру. Поскольку вы не определили маршрут GET / , Express выдает ошибку.

Я бы порекомендовал удалить файл вашего сервера из /public .

Вот как будет выглядеть ваше новое дерево каталогов:

После того, как вы настроили дерево каталогов как таковое, вы можете изменить следующее:

Источник

Статические файлы и функция static()¶

Для того чтобы Node.js сервер мог передавать по запросу находящиеся у него статические файлы (изображения, аудио, HTML, CSS, JS), используется функция фреймворка Express static() .

Добавьте перед определением всех маршрутов следующий код.

Функция должна вызываться как Middleware с использованием метода use() . В качестве параметра Express static() принимает имя директории, в которой находятся все статические файлы, но при запросе самих файлов указывать в URL директорию не нужно. Поиск будет осуществляться относительно указанной директории.

Например, запрашивается следующий файл CSS.

Когда сервер Node.js получает запрос, он определяет, что это статический файл, а функция Express static() уже сама знает, что его необходимо искать в директории assets .

В приведенном выше коде использования Express static() , задается абсолютное расположение директории assets с помощью переменной __dirname , поскольку без нее путь будет формироваться относительно того места, из которого был запущен процесс Node.js.

Express static() может использоваться неограниченное количество раз. Например, если у вас имеется две директории со статическими файлами и обращение к ним должно происходить в зависимости от запрашиваемого URL, то используется следующая запись.

Здесь первым параметром методу use() передается начало URL, по которому будут запрашиваться файлы, а вторым параметром — место, где нужно будет его искать.

Источник

Читайте также:  Share play ведьмак 3 не работает
Оцените статью