Open9

Astro on Cloudflare

nownabenownabe

Cloudflare PagesにAstroをデプロイして、POSTを処理するためにFunctionsを使いたいけどうまくいかない。

nownabenownabe

Gitでデプロイするのがうまくいかないので、wranglerを使ってデプロイしてみる。
よくわからんがgcloudみたいなもんやろ。

とりあえず npm install wrangler --save-dev でインストール。
https://developers.cloudflare.com/workers/wrangler/install-and-update/

npx wrangler pages download config <pages name> で既存の設定を wrangler.toml に落としてくれる。認証も勝手にブラウザ開いてやってくれる。

nownabenownabe

npx wrangler pages deploy を実行してみる。
DeploymentのRouting configurationになんか出てきたのでデプロイはできたっぽい。

{
  "baseURL": "/",
  "routes": [
    {
      "method": "",
      "module": [
        "helloworld.js:onRequest"
      ],
      "mountPath": "/",
      "routePath": "/helloworld"
    }
  ]
}

だがまだ curl https://example.com/helloworld 叩いても静的生成した 404.html が返ってくる

nownabenownabe

astro.config.mjsinclude を追加してみても、dist/_routes.json を消してデプロイしてみても変わらず。うーむ

  adapter: cloudflare({
    imageService: "compile",
    routes: {
      extend: {
        include: [{ pattern: "/helloworld" }],
      },
    },
  }),
nownabenownabe

routingされない問題は解決してないが、functionsは dist/functions になくてもいいらしい。
"build": "astro build && cp -r functions dist/functions" してたけど、cpしなくても wrangler pages deploy だとhelloworld deployされてた。

nownabenownabe

adapterなしでhybridを試そうとしたけど、hybridはadapterが必須らしい。

22:36:25.741	13:36:25 [build] ✓ Completed in 96ms.
22:36:26.002	[NoAdapterInstalled] Cannot use `output: 'server'` or `output: 'hybrid'` without an adapter. Please install and configure the appropriate server adapter for your final deployment.
22:36:26.002	  Hint:
22:36:26.003	    See https://docs.astro.build/en/guides/server-side-rendering/ for more information.
22:36:26.003	  Error reference:
22:36:26.003	    https://docs.astro.build/en/reference/errors/no-adapter-installed/
22:36:26.003	  Stack trace:
22:36:26.003	    at viteBuild (file:///opt/buildhome/repo/node_modules/astro/dist/core/build/static-build.js:42:11)
22:36:26.003	    at async AstroBuilder.run (file:///opt/buildhome/repo/node_modules/astro/dist/core/build/index.js:182:7)
22:36:26.004	    at async build (file:///opt/buildhome/repo/node_modules/astro/dist/cli/build/index.js:24:3)
22:36:26.004	    at async cli (file:///opt/buildhome/repo/node_modules/astro/dist/cli/index.js:175:5)
22:36:26.117	Failed: Error while executing user command. Exited with error code: 1
22:36:26.127	Failed: build command exited with code: 1
22:36:27.401	Failed: error occurred while running build command