我正在尝试使用Windows 7 Pro计算机上的MINGW64泊坞箱中的angular-cli构建我的角度项目。
在git bash中,我使用的命令是:
ng build --prod --base-href /appcontext/
我要做的是将属性href="/"
的当前基本标记修改为href="/appcontext/"
相反,我得到一个带有href="C:/Program Files/Git/appcontext/"
的基本标签。
有人有任何想法吗?
答案 0 :(得分:7)
迟到的回答,但是我遇到了类似的问题,并且在MINGW中遇到了这个问题(我试图在Windows 10上通过GIT Bash运行带有ng-serve
参数的--base-href
)。仅通过在Powershell中运行而不是GIT Bash来解决 - base-href参数在那里处理得很好。
答案 1 :(得分:1)
TLDR:将第一个/
替换为/
。
在Windows上使用git-bash时我也遇到过这个问题。 git-bash查看命令的最后一个参数
ng build --prod --base-href /directory/
作为相对于其二进制文件夹的路径,并在其前面添加参数(它将“似乎是”的相对路径转换为绝对路径)。
我尝试the suggested method在开头使用双斜杠:
ng build --prod --base-href //directory/
这不会被git-bash取代,但是,生成的基本标记有效地使浏览器不仅替换URL的基本路径,而且还替换主机名,这是该字符串的第一部分。因此,如果您在主机hostname
上投放应用,则希望该网址为
http://hostname/directory/
但它刚刚成为
http://directory/
您可以通过将主机名硬编码到基本参数中来解决此问题:
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工具中“修复”此非转义参数时,此hack可能不再有效,因为这会导致
<base href="&#x2f;directory/">
最终会使您的网址看起来像
http://hostname//directory/
答案 2 :(得分:1)
设置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的环境变量。这是一个 ;定界字符串,将其每个部分与每个参数的开头部分进行比较,如果找到匹配项,则跳过该转换。一个MSYS2_ARG_CONV_EXCL的值示例将禁止上述3种情况的路径转换,例如/ switch; / sdcard;-root =。
答案 3 :(得分:0)
我在this website上找到了一种适用于Git bash的解决方案:
npm ng build –base-href="//my-path\\" --prod