HTML5模式 - ui-router - 未捕获的SyntaxError:意外的令牌<

tom*_*456 7 node.js express angularjs

努力让html5模式与ui-router很好地配合,但似乎有很多问题

我目前无法解决的问题很奇怪所以任何建议都值得赞赏.

我有这些状态:

        .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"
        })
Run Code Online (Sandbox Code Playgroud)

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

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

在此输入图像描述

对不起,我不能更详细,但我根本不知道是什么导致了这个问题?

Cha*_*son 11

要看的一件大事是您的网址.尝试在您的templateUrls和您的Javascript包含URL之前放置一个'/',这样它们就是绝对的URL.当浏览器尝试访问JS文件并且它返回HTML(通常是404页面)时,该错误非常常见.

一旦您开始查看"/ docs/create"之类的URL,浏览器就会将相对URL视为其下的子路径,如果您没有捕获它,则很容易导致此错误.(查看上面调试器中的"网络"选项卡可以帮助确认这一点.)