2026/10/19 · AI 上線專家

本機跑得起來、上線就壞掉——三個最常見的原因,與請 AI 工具幫您修的方法

本機跑得起來、上線就壞掉——三個最常見的原因,與請 AI 工具幫您修的方法

為什麼本機能跑、上線就壞?

您請 AI 工具寫了一套系統,在自己電腦上打開 http://localhost:3000,畫面正常、功能也能用。但當您把程式碼上傳到主機、或交給工程師部署,卻發現網址打不開、瀏覽器顯示「無法連線」或 502 錯誤。

<cite index="1-3">這是最常見的第一次部署失敗原因,問題幾乎都出在:程式綁定了錯誤的位址、或監聽了錯誤的 port,或兩者都有。</cite>這不是您的錯,也不是 AI 工具寫錯——<cite index="1-10,1-11">AI 工具經常會同時寫死位址和 port,生成的程式碼在本機開發時正確,但放到正式環境就錯了。</cite>

以下是三個最常見的原因,以及您可以如何請 AI 工具幫您修正——就算您不會寫程式,也能看懂問題在哪裡。

原因一:程式只聽 localhost 或 127.0.0.1

<cite index="1-5">localhost(解析為 127.0.0.1)代表程式只接受來自同一台機器的連線。</cite><cite index="1-6">0.0.0.0 則代表程式接受來自任何網路介面的連線,包括外部連線。</cite>

當 AI 工具生成類似這樣的程式碼:

app.listen(3000, 'localhost', () => {
  console.log('Server running on http://localhost:3000')
})

<cite index="1-12,1-13">這裡的 'localhost' 是綁定位址,您需要完全移除它,或替換成 '0.0.0.0'。</cite><cite index="3-15,3-16">開發者將 Flask 應用程式部署到 EC2、綁定到 127.0.0.1,然後不明白為什麼外界無法存取——伺服器運作正常,但只對自己開放。</cite>

怎麼請 AI 工具修正:

「請把程式碼裡的 app.listen(3000, 'localhost', ...) 改成 app.listen(3000, '0.0.0.0', ...),讓它可以接受外部連線。」

或更簡單:

「我的程式在本機能跑,但放到主機上外部連不進來,請檢查是不是綁定到 localhost 了,幫我改成可以接受外部連線的設定。」

原因二:寫死 port 3000,而不是讀 PORT 環境變數

<cite index="1-7,1-8">如果您的程式忽略 PORT 環境變數、寫死一個 port 號碼,它會在平台沒有監聽的 port 上啟動。平台嘗試連到它指定的 port、什麼都收不到,就標記部署失敗。</cite>

大多數雲端平台(Render、Railway、Azure、Heroku)會自動分配一個 port 給您的應用程式,並透過 PORT 環境變數告訴程式該用哪個 port。<cite index="12-1,12-4">如果 PORT 環境變數沒有明確設定,會自動設為最低的公開 port 號碼。</cite>

正確的寫法應該是:

const port = process.env.PORT || 3000
app.listen(port, '0.0.0.0')

<cite index="1-9">|| 3000 這個備用值讓程式在本機(PORT 未設定)和正式環境(平台設定 PORT)都能運作。</cite>

怎麼請 AI 工具修正:

「請把程式碼裡寫死的 port 3000 改成讀取環境變數 process.env.PORT,並保留 3000 當備用值,讓它可以在 Render / Railway / Azure 上正常跑。」

如果您使用 Python Flask:

「請把 Flask 的 app.run(port=5000) 改成讀取環境變數 PORT,並改成 host='0.0.0.0',讓它可以部署到雲端主機。」

原因三:依賴本機才有的檔案或服務

<cite index="9-2,9-3">最常見的正式環境失敗是缺少環境變數。您的程式嘗試讀取 DATABASE_URL,什麼都找不到,然後崩潰。</cite><cite index="4-6,4-7">.env 檔案在本機存在,但從未在伺服器上建立。</cite>

另一個常見狀況:<cite index="6-12,6-13">檔案寫入通常會成功,然後檔案就消失了。無伺服器函式和大多數容器主機給應用程式的檔案系統會在重啟、重新部署或請求落到另一個實例時被丟棄,所以任何儲存在程式碼旁邊的東西都是暫時的。</cite>

怎麼請 AI 工具修正:

如果是環境變數問題:

「我的程式在本機用 .env 檔案、有 DATABASE_URL 和 API_KEY,但部署到 Render 後讀不到這些變數。請告訴我應該在 Render 的環境變數設定裡加哪些項目,以及每個變數的作用。」

如果是檔案儲存問題:

「我的程式會把使用者上傳的圖片存在本機資料夾,但部署後檔案會消失。請建議我改用什麼雲端儲存服務(例如 AWS S3 或 Cloudflare R2),並幫我改寫上傳的部分。」

部署前的三個快速檢查

在您把程式碼交給工程師、或自己嘗試部署之前,可以先請 AI 工具做這三個檢查:

  1. 檢查綁定位址:

    「請檢查程式碼裡所有 app.listen 或 app.run 的地方,確認沒有寫死 localhost 或 127.0.0.1,改用 0.0.0.0 或完全不指定位址。」

  2. 檢查 port 設定:

    「請確認所有 port 設定都讀取 process.env.PORT(Node.js)或 os.environ.get('PORT')(Python),並有合理的備用值。」

  3. 列出所有環境變數:

    「請列出這個專案需要的所有環境變數,包括資料庫連線、API 金鑰、第三方服務設定,並告訴我哪些是必填、哪些可以省略。」

這三個問題不需要您懂程式——您只需要把 AI 工具的回答截圖給工程師,或對照雲端平台的環境變數設定頁面,逐項填入即可。

下一步:讓系統真正可以上線

本機能跑、上線就壞,通常不是程式邏輯的問題,而是部署設定的落差。如果您手上有一個「AI 說做好了、本機也能開」的系統,但不確定放上主機後會不會正常運作,我們提供免費的程式碼健診服務,幫您檢查這類部署前最容易踩的坑,並給您一份具體的修正建議清單——包括上面提到的三個問題,以及其他可能影響上線的風險點。

如果您想進一步了解我們如何協助「做到一半」或「本機能跑、不知道怎麼上線」的專案安全收尾,歡迎參考我們的服務說明。我們的目標很簡單:讓您手上那個「差一步就能用」的系統,真正用起來。