Почему путь в <script>src, начинающийся с одиночной косой черты, приводит к ошибке? - PullRequest
1 голос
/ 10 мая 2019

У меня есть такая структура проекта:

/root
  /static
    script.js
  page.html

Этот код:

<html>
    <head>
        <script src="/static/script.js"></script>
    </head>
    <body>
        ...
    </body>
</html>

приводит к:

Loading failed for the <script> with source “file:///static/script.js”.

Почему это так?Я ожидаю, что он будет искать папку static в текущем каталоге (то есть root).

Ответы [ 3 ]

1 голос
/ 10 мая 2019

Ошибка в том, что такого файла нет в корневом каталоге вашей системы.

Эту проблему легко решить, обслуживая папку /root и получая доступ к page.html через этот сервер.

Вы можете найти список статических файловых серверов Здесь .

Переход с Node.js на http-сервер .

Откройте терминал в вашем каталоге / root и выполните следующие команды:

npm install -g http-server http-server -p 8000

Затем вы можете получить доступ к вашему page.html файлу на http://localhost:8000/page.html

1 голос
/ 13 мая 2019

В данном конкретном случае возникает ошибка, потому что я только что открыл page.html в браузере на моей машине (т.е. я не обслуживал его через сервер), поэтому / интерпретируется как корень локальной машины . Если бы я обслуживал проект, то / интерпретировался бы как корень проекта, и ошибки не было бы.


Немного более подробное объяснение / иллюстрация.
Учитывая эту структуру:

/root
  /static
    script.js
  page.html

Вот к чему будут обращаться различные пути (в page.html):

  • / - корневой каталог, он может означает /root, но также может означать корень текущей среды (см. Пояснение в начале этого ответа)
  • ./ - текущий (каталог, в котором находится page.html) каталог, просто так получается, что в данном случае это /root
    • Стоит отметить, что ./ можно вообще не указывать при обращении к некоторому файлу в текущем каталоге; поэтому ./static/script.js эквивалентно static/script.js

Я получил понимание, необходимое для этого ответа, от:

0 голосов
/ 10 мая 2019

Если у вас есть какой-либо каталог в вашей корневой папке и ваш файл js в нем, вам нужно указать путь только с именем папки, а затем имя файла, например:

folder-name/filename.js 

потому что в веб-браузере нет необходимости добавлять косую черту в начало пути к файлу браузер, так что сам по себе

...