遠端素材包裡出現 localhost,為什麼換一台電腦就可能打不開?
遠端包的素材位址如果指向 localhost,換電腦後就會請求接收者自己的機器。創作者電腦上的服務不會隨 ZIP 一起搬過去,所以「我這裡能播」不足以證明別人也能播。處理順序是:確認實際請求位址、核對應用網域、重新匯出,再用另一台裝置驗證。

導讀
遠端包的素材位址如果指向 localhost,換電腦後就會請求接收者自己的機器。創作者電腦上的服務不會隨 ZIP 一起搬過去,所以「我這裡能播」不足以證明別人也能播。處理順序是:確認實際請求位址、核對應用網域、重新匯出,再用另一台裝置驗證。
本文由 DramaFork 整理,依據當前專案的匯出與素材交付實作說明排查方法。下文的《霧港來信》、連接埠和現象是虛構教學例子,沒有把它們當作線上實測記錄。
先確認失敗的是頁面還是影片
遠端連結包仍然是一個需要解壓並按包內說明開啟的播放器包。它把影片等資源留在伺服器端,透過應用網域下的素材交付入口讀取。播放器頁面能開啟,但第一段影片載入失敗,與壓縮包無法解壓,是兩類問題。
先記錄接收者拿到的包版本、發生位置、網路是否可用,以及頁面顯示的原始提示。若連播放器都沒有開啟,先按 README.txt 檢查解壓與啟動方式;若能看見標題和選項,只是影片失敗,再查素材請求。不要在尚未定位時同時修改劇本、影片和網域,否則無法判斷哪個改動起作用。
檢查的是實際資源位址,不是正文裡有沒有出現這個單詞。說明文字可能提到本機測試方法,那不代表播放器真的請求了本機資源。
localhost 隨開啟者改變含義
虛構例子中,創作者在自己的電腦上執行連接埠為 3000 的服務,並從這個環境匯出遠端包。包中的影片位址使用 localhost:3000。創作者開啟時,位址指向自己的服務;接收者開啟時,它指向接收者電腦上的 3000 連接埠。接收者沒有執行同一服務,影片就無法取得。
127.0.0.1 同樣表示本機回環位址。把它換成另一個本機連接埠,仍不能解決跨電腦分享。區域網路位址只可能覆蓋相應網路中的可達裝置;公網出口 IP 也不能單獨證明某個連接埠對外可達。正式交付應使用實際部署且接收者能夠存取的應用網域,再驗證具體素材請求。
這類檢查關心位址指向誰、服務是否可達,不需要接收者在自己的電腦上複製整個創作環境。
在包裡檢查實際素材位址
當前匯出包包含 story.json、index.html、說明與啟動檔案。可以用文字編輯器查看故事資料與播放器頁面,搜尋 localhost、127.0.0.1,確認命中是否位於影片或其他素材位址。先保留原包,不要一邊搜尋一邊批次取代。
若熟悉瀏覽器開發者工具,也可查看播放時失敗請求的網域和回應情況。記錄網域、節點位置與錯誤類型即可,避免在公開回饋裡貼出整條帶交付憑證的素材連結。
| 看到的情況 | 下一步核對 |
|---|---|
| 頁面開啟,影片請求指向本機 | 應用網域配置及重新匯出後的位址 |
| 應用頁面可存取,素材請求失敗 | 該素材交付入口、服務回應與資源存在情況 |
| 同一網路可用,外部網路不可用 | 網域與服務的外部可達性 |
| 只有一個節點失敗 | 該節點的資源對應關係,先別歸因於所有網域 |
應用首頁能開啟不等於每個素材入口都正常。首頁與某段影片是不同請求,必須沿實際失敗的位置繼續檢查。
改配置之後,需要生成新包
當前實作會依據應用位址生成遠端素材入口;配置了應用網域時,應確認它指向實際部署的服務。發現本機位址後,先由維護專案的人核對部署網域,再重新匯出。舊包裡已經寫入的位址不會因為你修改了專案配置而自動更新。
不建議把包內所有 localhost 字串直接取代成某個網域。資源入口還涉及路徑與存取憑證,單改主機名不能證明新服務能夠識別同一個專案和素材。重新匯出後,應從新包的實際請求確認它使用了預期網域。
給新包一個可區分的版本名,通知接收者使用哪一份。如果兩個檔案都叫「最終版」,接收者可能仍然開啟舊包,使已經修正的問題再次出現。
用接收者條件走一條驗證路線
選擇一台未執行創作服務的裝置,解壓新遠端包,按說明啟動,保持連網。至少檢查開場、一個選擇點和選擇後的下一段影片;只驗證開場,可能漏掉後續節點的舊資源位址。
把結果寫成記錄:包版本、裝置與網路、走過的選擇、是否載入成功、失敗發生在哪。記錄「待驗證」與「已驗證」要分開,沒有另一台裝置時就保留這一缺口,不能用原電腦播放代替接收者驗收。
遠端包依賴網路和素材服務持續可用。穩定交付入口不能解釋為永久服務保證。若接收者必須完全離線,應改用本機素材包並按說明驗證斷網播放;這是交付條件發生變化後的選擇,不能靠修改遠端網域達成。
下一次交付前,先保留原包,核對一個實際失敗請求,再重新匯出並測試同一條路線。這樣回饋能夠對應到明確版本和明確資源。


