first-app / run-and-preview · 約 10 分
起動してプレビューする
node server.js を起動し、GET / が 200 になることを確認します。
学習目標
学習者 PC の localhost でアプリが動きます。サイトは iframe でその URL を開きます。Codex をブラウザ内で動かしているわけではありません。 [codex-cli]
学習サイトは Cross-Origin-Embedder-Policy: require-corp のため、iframe に載せる応答には Cross-Origin-Resource-Policy: cross-origin と子側の Cross-Origin-Embedder-Policy: require-corp が必要です。また checks の http_ok はサイト origin から fetch(http://127.0.0.1:4780/) するので、Access-Control-Allow-Origin: * が無いとブラウザが本文を読めません(公開学習本文のみのサーバ向け)。
前提
server.js があること。plan-and-build の starter には上記ヘッダが含まれます。
なぜ必要か
ファイルがあることと、HTTP が 200 を返すことは別です。ヘッダが無いとプレビュー枠や判定がサイト側で失敗します。
実行場所
local-bridge では学習者 PC の Node で実プロセスを動かします。Codex CLI は使いません。
前のレッスン(plan-and-build)で作った server.js を引き継ぐ連続ワークフローのため、このレッスンは local-bridge のみです。ブラウザ内実習(WebContainer)はページ移動でファイルが消えるため、前レッスンの成果物を引き継げません。
node server.js 別の判定タブで checks を走らせます。ポートが塞がっていたら PORT=4781 は使わず、4780 を空けてください。この演習の判定は 4780 固定です。
応答ヘッダの確認例:
curl -sI http://127.0.0.1:4780/ | grep -iE 'access-control-allow-origin|cross-origin-resource-policy|cross-origin-embedder-policy'
成功結果
GET / が 200 で hello-codex-school を返し、上記 CORS / CORP ヘッダがあります。プレビュー iframe に本文が見えます。
失敗対処
listen していないと http_ok は失敗します。先にサーバを起動してください。EADDRINUSE なら既存プロセスを止めます。CORS エラーや iframe が空なら、plan-and-build のヘッダ要件を見直してください。
このレッスンで接続する
ページを移動するとブラウザ内実習の接続とファイルは消えます。演習の直前に、このパネルから明示的に再接続してください(自動では戻りません)。