HTML5模式下的$ location需要<base />

时间:2016-05-04 17:16:50

标签: javascript angularjs html5

我已经从Github添加了一个Tealium AngularJS lib作为我的SPA的bower组件。这立刻打破了我的单元测试。我不明白为什么它仍然应该使用已经设置了基本href的主index.html文件?

当我从命令行运行gulp test时,我收到此错误:

    PhantomJS 1.9.8 (Windows 7 0.0.0): Executed 11 of 118 SUCCESS (0 secs / 0.721 secs)

    PhantomJS 1.9.8 (Windows 7 0.0.0): Executed 12 of 118 SUCCESS (0 secs / 0.73 
    secs)

    PhantomJS 1.9.8 (Windows 7 0.0.0): Executed 13 of 118 SUCCESS (0 secs / 0.741 secs)

    PhantomJS 1.9.8 (Windows 7 0.0.0) ERROR

      Error: [$location:noc:/dev/code/new-site-ui] $location in HTML5 mode requires a <c:/dev/code/new-site-ui> tag to be present!

  http://errors.angularjs.org/1.4.8/$location/noc:/dev/code/new-site-ui
  at c:/dev/code/new-site-ui/bower_components/angular/angular.js:12197

PhantomJS 1.9.8 (Windows 7 0.0.0): Executed 13 of 118 ERROR (0 secs / 0.741 secs)

PhantomJS 1.9.8 (Windows 7 0.0.0): Executed 13 of 118 ERROR (0.004 secs / 0.741 secs)

[13:03:12] 'test' errored after 3.67 s
[13:03:12] Error: Failed 1 tests.

    at c:\dev\code\new-site-ui\gulp\unit-tests.js:41:58
    at removeAllListeners (c:\dev\code\new-site-ui\node_modules\karma\lib\server.js:336:7)
    at Server.<anonymous> (c:\dev\code\new-site-ui\node_modules\karma\lib\server.js:347:9)
    at Server.g (events.js:199:16)
    at Server.emit (events.js:129:20)
    at net.js:1421:10
    at process._tickCallback (node.js:355:11)

Process finished with exit code 1

我已经和它斗争了2天..有人有建议吗?

1 个答案:

答案 0 :(得分:21)

您确定HTML <base href="/">中有<head>吗?

为了避免使用<base>元素,您可以将其添加到角度模块配置中:

$locationProvider.html5Mode({
  enabled: true,
  requireBase: false
});

doc:https://docs.angularjs.org/error/$location/nobase