HTML5模式 – ui-router – 未捕获SyntaxError:意外的标记<

努力得到html5模式与UI路由器很好地玩,但似乎有很多问题

一个我现在无法绕过是非常奇怪的,所以任何build议表示赞赏。

我有这些国家:

.state('app', { url: '/app', templateUrl: 'views/app/app.html', resolve: { loggedin: checkLoggedin } }) .state('app.docs', { url: "/docs", templateUrl: "views/app/app.docs.html", controller: "DocsController" }) .state('app.create-doc', { url: "/docs/create", templateUrl: "views/app/app.editor.html", controller: "DocController" }) .state('app.edit-doc', { url: "/docs/:short", templateUrl: "views/app/app.editor.html", controller: "DocController" }) .state('app.account', { url: "/account", templateUrl: "views/app/app.account.html", controller: "AccountController" }) 

当不是在html5模式(使用hashbang),我导航到/#/app/docs/create一切正常工作,没有在控制台中的错误。

但是,当IN html5模式,我导航到/app/docs/create我得到了一个错误在控制台中指出Uncaught SyntaxError: Unexpected token <我的每个控制器和服务。

在这里输入图像描述

对不起,我不能在这方面更详细的,但我只是没有得到什么线索是什么原因造成的问题?

要看的一件大事就是你的url。 尝试在你的templateUrls前面加一个“/”,你的Javascript包含URL,这样它们就是绝对的URL。 当浏览器尝试访问一个JS文件并且它返回HTML(通常是一个404页)时,这个错误是非常常见的。

只要您开始查看像“/ docs / create”这样的URL,浏览器就会将相对URL视为其下的子path,如果您没有陷入这个错误,则很容易导致此错误。 (在上面的debugging器中查看networking选项卡可以帮助确认这一点。)