我正在尝试在Windows 7 Pro机器上的MINGW64 docker框中使用angular-cli构建我的角度项目。
在 git bash 中,我使用的命令是:
ng build --prod --base-href /appcontext/
我正在尝试做的是使用属性href="/"
修改我当前的基本标签以href="/appcontext/"
相反,我得到了一个带有href="C:/Program Files/Git/appcontext/"
的基本标签。
有人知道吗?
回答晚了,但我遇到了类似的问题,并且在 MINGW 中发生了这个问题(我试图在 Windows 10 上通过 GIT Bash 使用--base-href
参数运行ng-serve
)。只需在Powershell中运行而不是GIT Bash即可解决 - base-href参数在那里处理得很好。
TLDR:将第一个/
替换为/
。
问题:
我在Windows上使用git-bash时也遇到了这个问题。git-bash 看到命令的最后一个参数
ng build --prod --base-href /directory/
作为相对于其二进制文件夹的路径,并在参数前面加上该路径(它将"看起来"的相对路径转换为绝对路径)。
官方解决方案(不起作用,但可以修复):
我尝试了在开头使用双斜杠的建议方法:
ng build --prod --base-href //directory/
这不会被 git-bash 取代,但是,生成的基标记有效地使浏览器不仅替换 URL 的基本路径,而且还替换主机名,这是该字符串的第一部分。因此,如果您在主机hostname
上提供您的应用程序,您希望 URL 是
http://hostname/directory/
但它只是变成了
http://directory/
您还可以通过将主机名硬编码到 base 参数中来解决此问题:
ng build --prod --base-href //hostname/directory/
这里的问题是您的构建现在采用固定的主机名。由于我不喜欢这个解决方案,我进一步尝试并找到了一个不错的选择。
我的解决方案(目前有效,但在将来的版本中可能会中断):
我发现了一个聪明的"技巧":用HTML实体替换第一个斜杠。CLI 工具将该字符串原封不动地放入href="..."
,并且不会(双重)转义与号(恕我直言,它应该)。斜杠符号的可能实体是/
,因此您的命令如下所示:
ng build --prod --base-href /directory/
这看起来很奇怪,但有效:
<base href="/directory/">
这完全"等同"(在HTML/XML意义上)与
<base href="/directory/">
请注意,当 Angular 开发人员决定在 CLI 工具中"修复"这个非转义参数时,此黑客可能不再有效,因为这会导致
<base href="&#x2f;directory/">
最终使您的URL看起来像
http://hostname//directory/
我在这个网站上找到了一个在 Git bash 上适合我的解决方案:
ng build –base-href="//my-path\" --prod
当我在 git bash 中运行此命令时,我遇到了类似的问题。
ng b --prod=true --base-href "/my-href/"
我总是弄错这个 href:
<base href="C:/Program Files/Git/my-href/">
在运行相同的命令后,我得到了正确的行为,但在CMD中(Powershell也很好,Windows)。我得到了预期的结果
<base href="/my-href/">
设置MSYS2_ARG_CONV_EXCL
环境变量以禁用路径重整
export MSYS2_ARG_CONV_EXCL=--base-href=
或者将其设置在命令的开头
MSYS2_ARG_CONV_EXCL=--base-href= ng build --base-href="/mypath/"
可以有选择地禁用路径转换。MSYS2 读取一个名为 MSYS2_ARG_CONV_EXCL 的环境变量。这是一个 ;分隔字符串,其中每个部分都与每个参数的前部分进行比较,如果找到匹配项,则跳过该转换。禁止上述 3 种情况的路径转换的 MSYS2_ARG_CONV_EXCL 值的示例是/switch;/sdcard;--root=。
(来源:https://github.com/msys2/msys2/wiki/Porting)
将dist发布的文件夹内容放在物理路径"C:/Program Files/Git/my-href/"中,打开index.html文件并将基本路径替换为"/my-href/">
对于 Git Bash 4 Windows,解决方案是:
ng build --configuration production --base-href='//context'