Окно.location перестал работать в JavaScript

#javascript #ubuntu #window.location

Вопрос:

Я создаю веб-приложение. Только что произошло что-то очень странное. Я программировал страницу в одной папке, а затем захотел протестировать свое приложение с самого начала. Этот код, который работал всего полчаса назад, перестал работать:

 window.location = "/navigation/navigation.html";
 

Я ничего не переименовывал и не менял первый файл .js. Я использую Linux Ubuntu и Google Chrome для просмотра своих работ. Что-то изменилось в системе? Что я должен сделать, чтобы решить эту проблему?

Первая программа .js находится в папке входа в систему, перенаправляя ее в папку навигации.

Вот как выглядит папка навигации.

Комментарии:

1. Есть ли какие-либо ошибки в консоли?

2. «crbug / 1173575, файлы модулей, отличные от JS, устарели».

3. Но нет ошибки, когда он пытается выполнить window.location назначение? Что-нибудь отображается на вкладке Сеть?

Ответ №1:

Короткий плохой ответ:

Используйте это.

 window.location = "./navigation/navigation.html";
 

Длинный хороший ответ:

Это зависит от используемого вами веб-сервера.

Если вы используете nginx / apache, с root, установленным для папки, в которой navigation.html ложь, тогда абсолютный путь "/navigation/navigation.html" работает просто отлично.

Если вы просто дважды щелкаете HTML-файл, вам нужно использовать относительный путь следующим образом:

 window.location = "./navigation/navigation.html";
 

Постарайтесь создать согласованную среду для разработки. Самый простой сервер, который вы можете настроить http-server , — это пакет npm, который вы можете установить с помощью:

 sudo apt install npm
npm install -g http-server
 

а затем используйте следующим образом:

 cd /folder/of/your/project
http-server # command hangs this terminal!
 

затем открытие localhost:8080 в вашем веб-браузере. Тогда все пути внутри вашего веб-приложения будут абсолютными по отношению к папке, в которой вы запустили http-server команду. Например, вы можете получить доступ /folder/of/your/prjoect/navigation/navigation.html , введя URL localhost:8080/navigation/navigation.html .

Если вы готовы принять вызов, попробуйте установить и использовать nginx вместо простого http-server . Это дает вам гораздо больше возможностей, в том числе возможность запускать серверный код. Вы можете установить его с помощью apt и узнать, как его использовать, здесь: https://nginx.org/en/docs/beginners_guide.html