今天在發佈一個專案時, 突然發現 ng build 上傳專案後
出現大量類似以下的錯誤
Failed to load resource: net::ERR_FILE_NOT_FOUND file:///D:/css/app.css
經過 Google 後, 找到答案是把
base href “/” 換成 ="./"
就可以了 , 我也確實解決了問題
我大致能理解, 這是一個相對路徑的問題
但是, 我不理解, 為什麼有的專案發布時要採用
base href = “/”
有的要採用
base href="./"
有哪位大大知道其原理與原因嗎 ?
PS : 這些專案, 在本地開發期間 ( npm start ) 都可以正常執行, 沒有任何差別
你的跑網站是用哪一個服務在跑? iis 或是其他的
SERVER 2008 R2 上的 IIS , 不過我在本地的 disp 資料夾, 跑的結果一樣
因為首頁不必登入的頁面就打不開了
這 2 天沒空上傳到 Linux 主機, 但我相信結果會是一樣的
提供我在 Github 上找到答案的文
不過, 上面我看不出有明確的原理解釋
那篇 issue 的答案並無法解釋為什麼 ./ 可以跑,因為就我在使用上來說, 我的 base 位置從沒有改變過,但也沒有遇到你的那個問題,所以針對你原本的疑問,還是沒有正解
是啊, 那個回答者 Myrga 她就沒解釋為什麼
所以我才上來問
因為我很久以前有看過別人的 Template 是 ./ 的
我還以為對方打錯了。
結果, 這次自己遇到, 更有意思的是, 我看這文章好像很多人有遇過類似的問題
在 Angular 裡面,如果用 <base href="./">
遲早有一天會掛掉,即便現在是好的。
看這個錯誤訊息 Failed to load resource: net::ERR_FILE_NOT_FOUND file:///D:/css/app.css
很明顯是路徑寫錯,要從源頭查問題,不應該直接改 <base href="./">
才對。
保哥, 你好
不是這樣子的, 路徑一直應該是對的
D:/css/app.css 是 Git 上的範例,
我來 SHOW 一下我這的狀況!
但, 只要改成 ./ 就好了
我就是不想改 ./ 才上來問的
但是, 都找不到原因與說法
會因為是放在 IIS 下的
虛擬目錄下的關係嗎 ?
我剛發現只要不是放虛擬目錄下, 就好了 ( 但 F12 有其他錯訊訊息, 沒空細看, 但至少有跑起來 )
剛好之前的專案都是直接放在 http://xxx.xxx.xxx.xxx 下
第一次把專案放到
http://xxx.xxx.xxx.xxx/apptest
早上有會,先閃了, 等等再試
正常的網址,不可能長這樣 D:/css/app.css
,放上 IIS 更不可能是這樣,這種網址不能讓其他人瀏覽耶。
我無法理解你為什麼要用 D:/css/
這種路徑?
保哥, 你好
是的…
這是一個蠢事
因為為了在這個論壇發佈這個問題 ,
我一不小心 COPY 問題時 把本地的 disp 打開 再按 F12
把問題貼了上來, 路徑就變這樣子了
不過, 無妨, 我應該找到原因了…
最原始的問題原因
這是因為 Angular deploy 到 subfolder 找不到路徑的問題
因為我是第一次發布一個專案到 subfolder
所以 ng build -prod --base-href /mysubfolder/
己經解決了問題
感謝 2 位的幫忙
PS : base href ="./" 就發生問題時, 剛好 Google 到, 又剛好能解
不過, 我想那不是正確的解法吧
想請教一下為什麼 angular 內如果用 <base href="./">
遲早有一天會掛掉
當你用了 Child Route 的時候就會掛掉,所有網址都會出現錯誤。
1個讚