Сценарии, вызываемые в HTML-файлах, в конечном итоге ссылаются на адрес локального хоста вместо локальной папки

#javascript #node.js #express

#javascript #node.js #выражать #экспресс

Вопрос:

Я написал простой веб-сервер, используя Express для отображения HTML-страницы.

 const path = require('path');

const app = express();

app.use(express.static(__dirname   '/src'));

app.get('/', function(req, res) {
    res.sendFile(path.join(__dirname   '/src/index.html'));
});

app.listen(3000, ()=> console.log('Listening on port 3000'))
  

В html я вызываю локальный файл js следующим образом:

 <script src="./src/file.js"><script>
  

Когда страница загружается, файлы JS не загружаются, вызывая ошибку:

 GET http://localhost:3000/src/file.js net::ERR_ABORTED 404 (Not Found)
  

Конечно, этот адрес не существует, следовательно, он не загружается.

Любая помощь в этом вопросе очень ценится!

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

1. Если страница обслуживается из, localhost:3000 тогда ./ это будет этот домен. Я не уверен, что понимаю вопрос.

2. Используйте <script src="/file.js"><script> вместо этого. В вашем HTML вам нужно использовать URL-адреса, а не пути файловой системы (это потому, что браузер запрашивает скрипт с сервера, поэтому предполагается, что это допустимый URL-адрес, который будет работать «извне» сервера; проблема, которую вы описываете в заголовке вашего вопроса, — единственный способ, которым это будет работать; браузер не имеет прямого доступа к жесткому диску сервера)

3. Я пробовал «/file.js » вместо «./file.js » также, но я сталкиваюсь с той же проблемой.

4. Исходя из express.static строки, если вы введете http://localhost:3000/file.js в адресную строку вашего браузера и нажмете enter, вы должны увидеть скрипт.

5. Теперь это работает! /src был ненужным. Если вы укажете это в качестве ответа, я могу принять это и поддержать вас. Спасибо!