問題
Nuxt Bridge は @nuxtjs/composition-api
をそのまま使えるようにしてあるが、@nuxtjs/composition-api
パッケージそのものは使われていない。実装をエイリアス指定している。nuxt/framework/packages/bridge/src/capi.ts#L46
そのため
import { useContext } from '@nuxtjs/composition-api';
はそのまま使えるが、VSCode は型情報を見つけられずに推論が効かなくなる。#app
や nuxt-edge
からは useContext
がエクスポートされておらず、インポート元をこれらに置き換えることはできない。
対策
そこで一度消した @nuxtjs/composition-api
を devDependencies に再び追加し、以下のようにする。
tsconfig.json{
"extends": "./.nuxt/tsconfig.json",
"compilerOptions": {
"types": [
"@nuxtjs/composition-api/dist/runtime/"
]
}
}
とりあえずこれで OK。
いつまでも useContext
を使ってないで、早く Nuxt3 の API に移行するのが良い。
ref
- https://github.com/nuxt/framework/blob/main/packages/bridge/src/runtime/capi.legacy.mjs
- この実装ファイルが TypeScript で書かれていないため、ここから型を取り出せない
- https://github.com/nuxt/framework/blob/master/packages/bridge/src/capi.ts#L53
- ここに
// TODO: Add @nuxtjs/composition-api shims
と書いてあるので今後対応されるかもしれない
- ここに
- https://github.com/nuxt/framework/issues/967
useContext
を使わずにuseNuxtApp
から取り出すというものだがuseNuxtApp: () => any
なので無意味