Skip to content

Nitro cloudflare dev plugin fails to resolve #imports with compatibilityVersion: 5 + compatibilityDate: 'latest' #34282

@vinayakkulkarni

Description

@vinayakkulkarni

Environment

Operating system      macOS 15.3 (Darwin 25.2.0 arm64)
CPU                   Apple M2 Max
Node.js version       v24.13.0
Package manager       pnpm 10.24.0
Nuxt version          4.3.1
Nitro version         2.13.1
Builder               vite 7.3.1
Vue version           3.5.27
Config                future.compatibilityVersion 5, compatibilityDate latest
Modules               -

Reproduction

https://github.com/vinayakkulkarni/nuxt-cloudflare-imports-bug

git clone https://github.com/vinayakkulkarni/nuxt-cloudflare-imports-bug.git
cd nuxt-cloudflare-imports-bug
pnpm install
rm -rf .nuxt node_modules/.cache
pnpm dev

Describe the bug

When using cloudflare-pages preset with compatibilityVersion: 5 and compatibilityDate: 'latest', the Nitro dev server fails to start with:

[nitro] ERROR Error: Could not load /path/to/.nuxt/imports
  (imported by nitropack/dist/presets/cloudflare/runtime/plugin.dev.mjs):
  ENOENT: no such file or directory, open '/path/to/.nuxt/imports'

The cloudflare-dev emulation plugin (nitropack/dist/presets/cloudflare/runtime/plugin.dev.mjs) imports from #imports:

import { useRuntimeConfig, getRequestURL } from "#imports";

#imports resolves to the physical path .nuxt/imports, but this file is never generated — only .nuxt/imports.d.ts exists.

Minimal nuxt.config.ts

export default defineNuxtConfig({
  future: {
    compatibilityVersion: 5,
  },
  compatibilityDate: 'latest',
  nitro: {
    preset: 'cloudflare-pages',
  },
});

Trigger conditions

All three are required. Removing any one makes the error disappear:

Config Value
future.compatibilityVersion 5
compatibilityDate 'latest'
nitro.preset 'cloudflare-pages'
  • compatibilityDate: '2025-02-08' (fixed date) → works fine
  • compatibilityVersion: 4 → works fine
  • preset: 'node-server' → works fine

Additional context

The combination of compatibilityVersion: 5 + compatibilityDate: 'latest' enables cloudflare-dev emulation in dev mode (visible in logs: "Using cloudflare-dev emulation in development mode."). This loads nitropack/dist/presets/cloudflare/runtime/plugin.dev.mjs which tries to import from the #imports virtual module. With compatibilityVersion: 5, the virtual module resolution seems to break and it falls back to resolving the physical file .nuxt/imports which doesn't exist.

Logs

> nuxt dev

●  Nuxt 4.3.1 (with Nitro 2.13.1, Vite 7.3.1 and Vue 3.5.27)

  ➜ Local:    http://localhost:3000/

ℹ Using cloudflare-dev emulation in development mode.
[nuxt] ℹ Running with compatibility version 5
✔ Vite dev server built in 19ms

[nitro]  ERROR  Error: Could not load /Users/vinayak/dev/personal/nuxt/vinayakkulkarni/nuxt-cloudflare-imports-bug/.nuxt/imports (imported by node_modules/.pnpm/nitropack@2.13.1/node_modules/nitropack/dist/presets/cloudflare/runtime/plugin.dev.mjs): ENOENT: no such file or directory, open '/Users/vinayak/dev/personal/nuxt/vinayakkulkarni/nuxt-cloudflare-imports-bug/.nuxt/imports'

undefined

Metadata

Metadata

Assignees

No one assigned

    Labels

    nitroNitro server engine integrationupstreamIssue caused by a dependency or upstream project

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions