framework icon indicating copy to clipboard operation
framework copied to clipboard

Two more ways to trigger "nuxt instance unavailable", one inside a pinia store action, one inside a plugin

Open henk23 opened this issue 3 years ago • 9 comments

Environment

  • Operating System: Darwin
  • Node Version: v18.12.0
  • Nuxt Version: 3.0.0-rc.14, 3.0.0
  • Nitro Version: 1.0.0
  • Package Manager: [email protected]
  • Builder: vite
  • User Config: css, modules, nitro, runtimeConfig
  • Runtime Modules: @pinia/[email protected], @pinia/[email protected]
  • Build Modules: -

Reproduction

https://stackblitz.com/edit/nuxt-starter-4tlygh?file=plugins%2F01.api.js,stores%2Fmain.js

Describe the bug

There are two points in my code where I get "nuxt instance unavailable", probably because of calling useNuxtApp and useRuntimeConfig repeatedly in nested function calls.

One looks roughly like this:

// inside a plugin

// This works fine
nuxtApp.$log.info('Sending request...');

setTimeout(() => {

  // FIXME: nuxt instance unavailable
  nuxtApp.$log.info('Got response: Dummy data');

  resolve({ dummy: 'data' });
}, 2000);

The other one looks like this:

// inside a store

const { $api, $log } = useNuxtApp();

// This works fine
$log.info('Loading external data...');

const extData = await $api.getData();

// FIXME: nuxt instance unavailable
$log.info('External data loaded.', extData);

Additional context

No response

Logs

Error inside the store looks like this:

[nuxt] [request error] [unhandled] [500] nuxt instance unavailable                                                10:27:46
  at useNuxtApp (./node_modules/nuxt/dist/app/nuxt.mjs:165:13)  
  at Module.useRuntimeConfig (./node_modules/nuxt/dist/app/nuxt.mjs:173:10)                                       10:27:40
  at log (./utils/logger.js:11:40)  
  at Object.info (./utils/logger.js:24:5)  
  at Proxy.loadExternalData (./stores/main.js:23:12)  
  at async eval (./plugins/02.init.server.js:11:95)  
  at async Object.callAsync (./node_modules/unctx/dist/index.mjs:72:16)  
  at async applyPlugin (./node_modules/nuxt/dist/app/nuxt.mjs:97:23)  
  at async Module.applyPlugins (./node_modules/nuxt/dist/app/nuxt.mjs:107:5)  
  at async createNuxtAppServer (./node_modules/nuxt/dist/app/entry.mjs:29:7)

Error inside the plugin looks like this:

[nitro] [dev] [uncaughtException] Error: nuxt instance unavailable                                                10:13:52
    at useNuxtApp (/home/projects/nuxt-starter-4tlygh/node_modules/nuxt/dist/app/nuxt.mjs:165:13)
    at Module.useRuntimeConfig (/home/projects/nuxt-starter-4tlygh/node_modules/nuxt/dist/app/nuxt.mjs:173:10)
    at log (/home/projects/nuxt-starter-4tlygh/utils/logger.js:11:40)                                             10:13:46
    at Object.info (/home/projects/nuxt-starter-4tlygh/utils/logger.js:24:5)
    at Timeout.eval [as _onTimeout] (/home/projects/nuxt-starter-4tlygh/plugins/01.api.js:12:24)
    at listOnTimeout (https://nuxt-starter-4tlygh.w-credentialless.staticblitz.com/blitz.bba8d0a5a025db74852964077975228459d6d20b.js:6:306541)
    at processTimers (https://nuxt-starter-4tlygh.w-credentialless.staticblitz.com/blitz.bba8d0a5a025db74852964077975228459d6d20b.js:6:307364)
    at https://nuxt-starter-4tlygh.w-credentialless.staticblitz.com/blitz.bba8d0a5a025db74852964077975228459d6d20b.js:15:258211
    at https://nuxt-starter-4tlygh.w-credentialless.staticblitz.com/blitz.bba8d0a5a025db74852964077975228459d6d20b.js:15:258522

henk23 avatar Nov 16 '22 09:11 henk23