首页 > 解决方案 > “Uncaught SyntaxError: Unexpected token <”(但等等,还有更多!)

问题描述

我正在尝试学习如何使用 Websockets。我有一个名为 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 并查看 Sources 时,我看到它加载的 WebSocketClient.js 文件只是它正在的 .jsp 文件的副本加载自,请求属性roomHost被替换为 javascript 文件的路径:

请求属性

这太奇怪了,我以前从未经历过,我在互联网上找不到任何关于它的信息。怎么回事??

我知道 js 文件不是问题,因为我可以从index.jsp(而不是room.jsp)很好地加载它。我以前开发过 Java Web 应用程序,但从来没有遇到过这个问题,我不知道是什么原因造成的。

标签: javascriptjspservletssyntax-error

解决方案


我弄清楚是什么原因造成的。该页面位于websockets-test/rooms/*,因此它正在寻找 js 文件rooms/js/而不是js/webapp 文件夹中的目录。我将标签src中的路径从更改为,现在它可以工作了。scriptjs/WebSocketClient.js/websockets-test/js/WebSocketClient.js


推荐阅读