Nuxt3をrc6からrc13へバージョンアップした話
はじめに
nuxt3の練習用リポジトリを作成し、その際に入れたのがNuxt3のrc6でした。
しかしrc6だといくつか問題があっためrc13にバージョンアップしました。
その際でのrc6の問題とrc13へバージョンアップした際の記述を自分のメモ用に作成しました。
rc6での問題
serverディレクトリにapiを作成し、アクセスした際に404になる
ドキュメントのServer Directory部分のようにAPIをたててみた際に、404になりました。
今回はAPIを試したかったので、ドキュメント通り、server/api
配下にhello.ts
を作成し、
下記コードを記載。
import { defineEventHandler } from 'h3';
export default defineEventHandler(() => 'Test get handler')
そしてhttp://localhost:3000/api/hello
にアクセス。そしたら404。
うーんと思い、index.vueで試しに下記コードの通りuseFetchしてみた。
const {data} = await useFetch('/api/hello/');
console.log(data.value);
結果console.logの値がnull値になる...
かつapiが404になる...具体的には下記エラーメッセージが。
[Vue Router warn]: No match found for location with path "/api/hello/"
ビルドされた.nuxt/types/nitro.d.ts
をみた感じ、nitroで型定義などはできていそうだが、
エラーにもある通りrouterがうまくとっていなさそう。
ドキュメントのようにServer Routesをhelloで立ててみたりserver/api/hello.ts
内で下記 コードのようにRouterを作成してみたが結果は同じ。
import { createRouter } from 'h3'
const router = createRouter()
router.get('/', () => 'Hello World')
export default router
rc6だとdefineEventHandler
が機能しないのかと思い、下記のようにコードを変更してみた。
export default (req, res) => 'Hello Nuxt3 from server!'
そして、http://localhost:3000/api/hello
にアクセスしたところ表示はできたが、コンソールでパスが通っていないとエラーになるかつuseFetchは変わらずnull値。
これによってrc6でnitroによってserverディレクトリ内のapiを認識はできるが、パスの生成までができないのかもと思い、rc13にバージョンアップしたところ無事できた...
rc6でserverディレクトリは機能していなさそう。ドキュメントの記載や同じ事象の方がいなかったため少し時間はかかりましたが、できてよかった。
rc6→rc13での書き換えた点
nuxt.config.ts
でのdefineNuxtConfigのimportを削除
defineNuxtConfigがrc6ではimportしないといけなかったが、rc13ではもう設定されているため
以下を削除。
import { defineNuxtConfig } from 'nuxt'
nuxt.config.ts
でのpostcssの設定記述場所の変更
下記の通り変更。
export default defineNuxtConfig({
build: {
postcss: {
// 記述
},
},
})
export default defineNuxtConfig({
postcss: {
// 記述
},
})
tailwindの読み込み変更
簡潔になりましたね。
postcss: {
postcssOptions: {
plugins: {
tailwindcss: {},
},
},
},
postcss: {
plugins: { tailwindcss: {} }
},
感想
rcの段階なためどのバージョンで何ができるようになったのか、なにがまだできないのがわからないので詰まったらとりあえずバージョンアップですね...
あとはライブラリのコードを理解し何ができるのかをコードから読み解く読解力があればそんなに詰まらなかったかなと思うので、もっと読解力をつけていきたい。
Discussion