Angular $locationProvider html5Mode / <base> 错误

Angular $locationProvider html5Mode / <base> error

所以我 运行 遇到了 Angular 1.3.15 和 $locationProvider 的问题。每次打开 html5mode 时,我都会收到 TypeError: Cannot read property 'replace' of undefined 错误。如果我关闭 html5mode,一切正常。

我的目录结构是这样的(4.DEV 是版本目录名):

public /
    - index.html
    4.DEV /
        css /
        js /
        images /
        partials /
        etc...

我有一个这样的基本标签集:

<base href="/4.DEV/">

我正在像这样配置 $locationProvider:

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

如果我将基本标签 href 更改为 "/" Angular 没有任何问题(但我的资源不会加载)。我怀疑问题 Angular 是因为我的 index.html 文件是网站其余部分的一个目录。

由于我不会在这里列出的原因,我无法更改此目录结构并且我真的不想更改基本标签(因为我不想手动将版本号粘贴到所有这些文件)。我也想保留 html5mode。

有人能解决这个问题吗?有没有什么方法可以让我手动为 Angular 设置 "base href",但为我所有的静态资产保留标签?

所以,看起来 Angular 的内部工作与标签的 href 紧密耦合,如果您的目录结构有点像我的非常规,就会导致重大问题。

偶然发现这个 Github thread 人们要求一个功能来改变这个并且 @greglockwood 发布了一个修复。

通过他的修复,当您为 Angular 的东西提供您自己的集合 "baseHref" 时,标签可以用于您的静态资产。

对我来说就像一个魅力!希望这可以帮助任何偶然发现这个问题的人!