1. ホーム
  2. javascript

[解決済み] HTML5 モードでの $location は <base> が必要です。

2022-02-11 19:31:48

質問

を追加しました。 Tealium AngularJS libをGithubからbowerコンポーネントとして私の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

2日間、この問題と格闘しています。 どなたかご提案がありますか?

解決方法は?

本当に <base href="/"> をHTMLの <head> ?

を必要としないようにするために <base> 要素を使用する場合は、angular モジュールの設定にこれを追加します。

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

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