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

Den*_*nis 3 javascript html5 angularjs

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

当我从命令行运行时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
Run Code Online (Sandbox Code Playgroud)

我一直在和这个斗争2天..有人有什么建议吗?

flo*_*bon 23

你真的确定你<base href="/">的HTML有<head>吗?

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

$locationProvider.html5Mode({
  enabled: true,
  requireBase: false
});
Run Code Online (Sandbox Code Playgroud)

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