Svelte なアプリケーションを Cloudflare にデプロイする
Svelte(SvelteKit) なアプリケーションを Cloudflare にデプロイしてみた。
ハマり
adapter の選択
SvelteKit アプリのデプロイにはデプロイ先向けの adapter が必要になる。
ドキュメントを見る限り、Cloudflare 向けの adapter はいくつかある。
今回のアプリは静的なページのみだったため @sveltejs/adapter-static
を選択した。
adapter によってデプロイ時の成果物の出力先等が変わるので Cloudflare 側のフレームワークプリセットの内容から変更する必要があった。
Node.js のバージョンが古い
ビルド環境の Node.js のバージョンが古くデプロイに失敗した。
16:42:13.952 Success: Finished cloning repository files
16:42:14.564 Installing dependencies
16:42:14.573 Python version set to 2.7
16:42:17.900 v12.18.0 is already installed.
16:42:19.068 Now using node v12.18.0 (npm v6.14.4)
16:42:19.265 Started restoring cached build plugins
16:42:19.281 Finished restoring cached build plugins
16:42:19.722 Attempting ruby version 2.7.1, read from environment
16:42:21.281 Using /opt/buildhome/.rvm/gems/ruby-2.7.1
16:42:22.277 Using PHP version 5.6
16:42:22.368 5.2.5 is already installed.
16:42:22.385 Using Swift version 5.2.5
16:42:22.385 Started restoring cached node modules
16:42:22.398 Finished restoring cached node modules
16:42:22.729 Installing NPM modules using NPM version 6.14.4
16:42:24.486 npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but package-lock.json was generated for lockfileVersion@3. I'll try to do my best with it!
16:42:29.218 npm ERR! code ENOTSUP
16:42:29.219 npm ERR! notsup Unsupported engine for sass@1.63.4: wanted: {"node":">=14.0.0"} (current: {"node":"12.18.0","npm":"6.14.4"})
16:42:29.219 npm ERR! notsup Not compatible with your version of node/npm: sass@1.63.4
16:42:29.219 npm ERR! notsup Not compatible with your version of node/npm: sass@1.63.4
16:42:29.220 npm ERR! notsup Required: {"node":">=14.0.0"}
16:42:29.220 npm ERR! notsup Actual: {"npm":"6.14.4","node":"12.18.0"}
16:42:29.227
16:42:29.227 npm ERR! A complete log of this run can be found in:
16:42:29.227 npm ERR! /opt/buildhome/.npm/_logs/2023-06-18T07_42_29_222Z-debug.log
16:42:29.244 Error during NPM install
16:42:29.250 Failed: build command exited with code: 1
16:42:29.938 Failed: error occurred while running build command
どうやら v2(beta) な環境があるらしく設定ページから切り替えることで Node.js 18系を利用するようになった。
最後に
簡単なアプリケーションを Cloudflare にデプロイしてみた。 シンプルなアプリならドキュメントが充実しているのでシュッと扱えて気持ちがよかった。 Svelte 自体については初めて触ったが、まだどうしたら良いのかわかっていない...