【问题标题】:Spring mvc loading JS with Uncaught SyntaxError: Unexpected token <Spring mvc 用 Uncaught SyntaxError 加载 JS: Unexpected token <
【发布时间】:2017-04-01 07:40:53
【问题描述】:

我正在使用 Spring Boot。我有一个简单的测试应用程序的结构:

我在 TestController 中所做的是获取 2 个路径变量并加载 index.html:

@Controller
public class TestController {

    @RequestMapping("/{vara}/{varb}")
    public String index(@PathVariable(value="vara") String vara, @PathVariable(value="varb") String varb) {
        return"/index.html";
    }
}

并且 index.html 是空的,干净的 html 页面:

<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
TEST
</body>
</html>

所以在我的浏览器中输入 localhost:8080/abbas/mirza ,一切看起来都很好,并且 html 页面很容易加载。 我有 2 个 js 文件,test.js/js/testb.js 里面都有这行代码。

var s = {}; 

现在我添加这个

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

一切都还好,我可以查看 test.js 代码,但是当我添加时

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

页面抛出异常

Uncaught SyntaxError: Unexpected token <

当我尝试打开 testb.js 文件时,它会显示这个

如果我将 testb.js 移动到 webapp 本身,它将毫无问题地加载。我是使用 Spring mvc 的新手,仍然对有关路由和访问资源的所有配置感到困惑。

知道我做错了什么吗?

编辑:(链接到 github) https://github.com/arashzz/test22

【问题讨论】:

  • 你在做什么?您是否尝试在 js 文件中编写 html,然后在其内部导入文件?对我来说听起来很前卫!
  • @arash-moeen 你能在 GitHub 上分享这个项目吗?根据提供的数据,我没有看到问题...
  • @arseniyadru 不,我不是,这就是它被显示为错误的方式。我的 html 中只有 1 行代码
  • @punkrocker27ka 如果我像这样删除控制器路由,它将简单地工作,但是当它像这样加载时,它的行为就像这样。我将在 GitHub 上分享并在这里发布
  • @punkrocker27ka 刚刚在问题中添加了 github 链接。

标签: javascript java spring spring-mvc spring-boot


【解决方案1】:

您使用的@RequestMapping 模式非常广泛,以至于您的 JavaScript 文件 testb.js 的路径与之匹配,因此提供索引页面代替您的 js 文件导致语法发生错误。

控制器:

@RequestMapping("/{vara}/{varb}")

JavaScript 路径:

/js/testb.js

这匹配 vara=jsvarb=testb.js 的模式

您的其他 JavaScript 文件位于 /test.js,因此与该模式不匹配,并且可以正确提供。

解决方案:

将@RequestMapping 模式调整为更窄的模式,例如:

@RequestMapping("/placeholder/{vara}/{varb}")

【讨论】:

  • 我完全按照你说的做了,但是还是一样的错误信息
  • @arash-moeen 我已经更新了我的答案。如果这能解决您的问题,请告诉我。
  • 好的,解决了这个问题,但这意味着我可以从另一个文件夹加载 js 文件的唯一方法是让 URL 像这样缩小。对吗?
  • @arash-moeen 正确:-)
【解决方案2】:

尝试&lt;script src="js/testb.js"&gt;&lt;/script&gt;不带/,因为index.html和js目录在同一目录级别

【讨论】:

  • 它会抛出 404 错误,因为没有 / 它会尝试从 http://localhost:8080/abbas/js/testb.js 访问它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-21
  • 2012-05-17
  • 2019-02-10
  • 2014-07-08
  • 2011-03-09
  • 2014-01-06
  • 2012-04-10
相关资源
最近更新 更多