«Uncaught SyntaxError: неожиданный токен <» (НО ЖДИТЕ, ЕЩЕ БОЛЬШЕ!) - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь научиться использовать веб-сокеты. У меня есть файл с именем WebSocketClient.js, который я пытаюсь импортировать с тегом script в моем файле .jsp. Вот JSP:

<!DOCTYPE html>

<html>

<head>
	<title>Insert title here</title>
	<link rel="stylesheet" href="css/styles.css">
</head>

<body>
  <h4>${roomHost}'s room</h4>
  <ul id="chat"></ul>
  <form method="post" action="chat/${roomHost}" enctype="application/x-www-form-urlencoded">
    <input type="text" name="message">
    <input type="submit" value="Send">
  </form>
  
  <script type="text/javascript" src="js/WebSocketClient.js"></script>
</body>

</html>

Когда я загружаю страницу в Chrome или Firefox, я получаю сообщение об ошибке Uncaught SyntaxError: Unexpected token <, и когда я захожу в DevTools и просматриваю источники, я вижу, что загруженный файл WebSocketClient.js является просто копией Файл .jsp, из которого он загружается, и атрибут запроса roomHost заменяется путем к файлу javascript:

Request attribute

Это так странно, я никогда не сталкивался с этим раньше, и я не могу найти ничего об этом в Интернете. WTF продолжается ??

  • Я пытался добавить <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> в верхней части JSP
  • Я пытался изменить <!doctype> на <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  • Я пытался полностью удалить <!doctype>
  • Я пытался переместить тег <script> в <head>
  • Я пробовал разные пути в атрибуте src
  • Я попытался переместить файл в другую папку и загрузить его оттуда
  • Я пытался изменить имя файла
  • Я попытался импортировать другой файл js, и произошло то же самое (содержимое загруженного файла js было просто копией файла .jsp)

Я знаю, что файл js не проблема, потому что я могу загрузить его просто с index.jsp (вместо room.jsp). Я разрабатывал веб-приложения на Java раньше, и у меня никогда не было этой проблемы, я не могу понять, что ее вызывает.

1 Ответ

0 голосов
/ 02 мая 2018

Я понял, что это вызвало. Страница находится на websockets-test/rooms/*, поэтому она искала файл js в rooms/js/ вместо каталога js/ в папке webapp. Я изменил путь src в теге script с js/WebSocketClient.js на /websockets-test/js/WebSocketClient.js и теперь он работает.

...