簡體   English   中英

使用 git bash 時,使用 base-href 構建的 Angular-cli 也會返回程序文件夾

[英]Angular-cli build with base-href also return programs folder when using git bash

我正在嘗試在 Windows 7 Pro 機器上的 MINGW64 docker 框中使用 angular-cli 構建我的 angular 項目。

在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/

您還可以通過將主機名硬編碼到基本參數中來解決此問題:

ng build --prod --base-href //hostname/directory/

這里的問題是您的構建現在假定一個固定的主機名。 由於我不喜歡該解決方案,因此我進行了進一步的試驗並找到了一個不錯的替代方案。

我的解決方案(目前有效,但在未來版本中可能會中斷):

我發現了一個聰明的“黑客”:用 HTML 實體替換第一個斜杠。 CLI 工具將該字符串原封不動地放入href="..." ,並且不會(雙重)轉義&符號(恕我直言,它應該這樣做)。 斜線符號的一個可能實體是/ ,所以你的命令看起來像:

ng build --prod --base-href /directory/

這看起來很奇怪,但有效:

<base href="&#x2f;directory/">

這完全“等效”(在 HTML/XML 意義上)到

<base href="/directory/">

請注意,當 Angular 開發人員決定在 CLI 工具中“修復”這個非轉義參數時,這個 hack 可能不再起作用,因為這會導致

<base href="&amp;#x2f;directory/">

最終使您的網址看起來像

http://hostname/&#x2f;directory/

我在 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 的環境變量。 這是一個 ; 分隔的字符串,其中的每個部分都與每個參數的前面部分進行比較,如果找到匹配項,則跳過該轉換。 MSYS2_ARG_CONV_EXCL 值的一個示例是 /switch;/sdcard;--root=。

(來源: https : //github.com/msys2/msys2/wiki/Porting

我在這個網站上找到了一個適用於 Git bash 的解決方案:

npm ng build –base-href="//my-path\\" --prod

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM