Nuxt3の正式リリースも近そうですが、まだまだ2で構築する機会もありそうなので覚書。
ServerMiddleware
NuxtのserverMiddlewareプロパティを利用すると、サーバサイドで動作するアプリをつくることができます。
これを利用してシンプルなAPIサーバを立てられるので、ちょっとしたWebアプリやモックなどに重宝します。
しかし、そのままだと若干開発時に設定が必要でいつも詰まるので覚書。
Express
公式ドキュメントにExpressを使えるよ的な事が書いてありましたが自分の環境では
import express from 'express'
て書いたらエラーになりました。
内包しているわけではないので、インストールが必要です。(あたりまえ)
npm install express
paths
serverMiddleware以下のコードでは、importするときに、tsconfigのcompilerOptions:pathsを適用してくれません。
import AAA from '@/aaa'
とか書いてしまうとエラーになります。
解決方法
tsconfig-paths-webpack-plugin
で解決できます。
参考:
例: 以下のように設定している場合、そのままでは、server/index.ts で import aaa from '@/aaa'
とかできないので、server以下のディレクトリでコードを書いたときも paths が使えるようにします。
serverMiddleware: [{ path: '/api', handler: '@/server/index.ts' }],
- プラグインをインストール
npm install --save-dev tsconfig-paths-webpack-plugin
- tsconfigに
@server
以下のパスを追加
...
"paths": {
"~/*": [
"./*"
],
"@/*": [
"./*"
],
"@server/*": [
"./server/*"
]
...
- nuxtの起動時にプラグインを利用するため、package.jsonの
scripts:dev
を変更する
"dev": "node -r tsconfig-paths/register ./node_modules/nuxt/bin/nuxt.js",
これで
npm run dev
したときにpathsを適用してくれます。
ホットリロード
ServerMiddleware配下のファイルはホットリロードしてくれないので不便です。
nuxt.config.js の設定で対応できます。
build: { watch: ['@/server/api/*.ts'] },
以上
ほんの覚書程度なので足りない内容などは以下を参考にしてください。