読者です 読者をやめる 読者になる 読者になる

AngularJSアプリをChromeで起動したときに「Error: Failed to execute 'replaceState' on 'History'」になる

AngularJS

まあ普通はまらないんでしょう。
今日AngularJSアプリをぽちぽち書いていたら、FireFoxIEでは動くのにChromeではなんか動かないぞ?ってことがあったのでメモ

FireFoxだと動くのにChromeで見たらまったくJSが動かなくて開発コンソールでみたらjavascriptが以下のエーラーをはいていました。

angular.min.js:81Error: Failed to execute 'replaceState' on 'History': A history state object
 with URL 'file:///C:/XXXXXXXXXXXXXXXX/index.html#/C:/' cannot be created in a document with origin 'null'.
    at Error (native)

とか

Error: [$injector:cdep] http://errors.angularjs.org/undefined/$injector/cdep?p0=%24route%20%3C-%20ngViewDirective

とか、
この原因はセキュリティ検査に引っかかっていて、オリジナルドメインが取得できないのでnullとなってしまい
その結果履歴操作がセキュリティエラーとなっているから。

最初は僕の書いたアプリがおかしいのかと結構悩んでしまった-。

なので同じドメインでちゃんと動かしてあげればいい。
アパッチなりのWebサーバ経由で動かせばChromeでも動きました。