Closed
Description
Problem
When we build a module with runtime plugin (and the plugin provides a provider via return { provide }
), the plugin type becomes any
, instead of provided type.
Reproduction
> pnpx nuxi init -t module sample-nuxt-module
> pnpm i
> pnpm add pino
> (go to src/runtime/plugin.ts) and edit:
>
import { defineNuxtPlugin } from '#app'
import Pino from 'pino'
export default defineNuxtPlugin((nuxtApp) => {
console.log('Plugin injected by my-module!')
const log = Pino()
return {
provide: {
log
}
}
})
> pnpm pack / pnpm nuxi-module-build
> (go to /dist/runtime/plugin.d.ts)
Sandbox: https://codesandbox.io/p/sandbox/sample-nuxt-module-build-ts-bug-xnk8ev
Expected
declare const _default: import("nuxt/app").Plugin<{
log: import("pino").Logger<import("pino").LoggerOptions | import("pino").DestinationStream>;
}>;
export default _default;
Actual
declare const _default: any;
export default _default;
Info
- Operating System:
Linux
- Node Version:
v18.13.0
- Nuxt Version:
3.2.2
- Nitro Version:
2.2.3
- Package Manager:
[email protected]
- Builder:
vite
- User Config:
-
- Runtime Modules:
-
- Build Modules:
-
Additional Info
- If we change the import from
#app
tonuxt/app
. The type now works, but it leads to this problem: cannot import fromnuxt/app
(Package import specifier "#build/app.config.mjs" is not defined) nuxt#14801 #imports
also falls to same effect