Angular $locationProvider html5Mode / <base> 错误

3

我在使用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”,但保持所有静态资产的标签不变?
1个回答

2
因此,看起来Angular的内部工作与标记的href紧密耦合,如果您的目录结构有些非传统,可能会导致重大问题。在Github线程中找到了这个帖子,人们正在寻求一个功能来改变这个问题,@greglockwood发布了一个解决方案。使用他的解决方案,标记可以用于您的静态资源,同时为Angular提供自己设置的“baseHref”。对我来说效果非常好!希望这能帮助任何遇到这个问题的人!

伙计,你帮我省了好多时间! - Emmanuel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接