content: Production Build: queryContent Triggers 500 Internal Server Error

Environment


  • Operating System: Darwin
  • Node Version: v21.2.0
  • Nuxt Version: 3.10.3
  • CLI Version: 3.10.1
  • Nitro Version: 2.9.1
  • Package Manager: pnpm@8.9.2
  • Builder: -
  • User Config: devtools, modules, content
  • Runtime Modules: @nuxt/content@2.12.0
  • Build Modules: -

Reproduction

Repo: https://github.com/santiagoaloi/nuxt_content_issue Live: https://nuxt-content-issue.vercel.app/

Describe the bug

I’m encountering a production-specific 500 error when using queryContent in any Vue SFC component within my Nuxt 3 project. This issue does not occur during development.

Steps to Reproduce:

1- Create a fresh Nuxt 3 project (no custom configurations or additional libraries). 2- Define some content using the @nuxt/content module., e.g a file named hello.json with the following content:

{
  "title": "Hello Content v2!",
  "description": "The writing experience for Nuxt 3",
  "category": "announcement"
}

3- In any SFC component, attempt to fetch content using queryContent:

<template>
  <main>
    {{ data }}
  </main>
</template>

<script setup lang="ts">
import { queryContent } from '@nuxt/content'

const data = await queryContent('/hello').findOne()
</script>

4- Build the project for production:

pnpm build && pnpm preview

5- Run the production server and the app in the browser.

Expected Behavior:

The content defined in page should be successfully retrieved and displayed in the component’s template.

Actual Behavior:

The server throws a 500 Internal Server Error. The error log typically includes:

[GET] "/api/query/yFRQI29ykM.1709594450379.json?_params=%7B%22first%22:true,%22where%22:%5B%7B%22_path%22:%22%2Fhello%22%7D%5D,%22sort%22:%5B%7B%22_file%22:1,%22$numeric%22:true%7D%5D%7D": 500

Additional context

I’ve also attempted the following troubleshooting steps:

Deployment to Vercel: I deployed the project to Vercel to see if the issue was specific to my local development environment. However, the 500 error persisted in the production build on Vercel.

Nitro Prerender Settings: I experimented with various Nitro prerender settings in an attempt to resolve the issue, but none of the configurations seemed to address the problem.

Nitropack Override: I tried overriding the default Nitropack version in the package.json file by adding the following configuration:

"overrides": {
  "nitropack": "2.8.1"
}

However, this attempt also did not resolve the 500 error.

Logs

No response

### Tasks

About this issue

  • Original URL
  • State: closed
  • Created 4 months ago
  • Reactions: 6
  • Comments: 15 (1 by maintainers)

Commits related to this issue

Most upvoted comments

This issue is resolved in the latest Nitro version (v2.9.3).

For reference: https://github.com/unjs/nitro/pull/2239.

We can all remove the resolutions override and use the latest Nitro version again. πŸ™‚

Hi,

Not sure if it helps but just leaving some feedback here. I also came across this issue (or very similar, error 500 when querying content only on prod) and managed to fix it by adding the following in my package.json:

"resolutions": {
    "nitropack": "2.8.1"
}

Using yarn v4 with nodeLinker: node-modules

Additionally

const { data } = await useAsyncData('articles', () => queryContent('/articles').find())

running this in production, while owning a /content/articles folder with .md files in it, returns an empty Array.

Hi,

Not sure if it helps but just leaving some feedback here. I also came across this issue (or very similar, error 500 when querying content only on prod) and managed to fix it by adding the following in my package.json:

"resolutions": {
    "nitropack": "2.8.1"
}

Using yarn v4 with nodeLinker: node-modules

Using resolutions and nitropack@2.8.1 indeed resolves the issue. I appreciate you sharing this workaround. πŸ‘

Here is my nuxt.config.ts

export default defineNuxtConfig({
  modules: ['@nuxthub/core', '@nuxt/ui', '@nuxt/image', '@nuxt/content'],
  devtools: { enabled: true },
  image: {
    format: ['avif', 'webp'],
  },
});

and package versions in package.json

"dependencies": {
  "@nuxt/content": "^2.12.1",
  "@nuxt/image": "^1.5.0",
  "@nuxt/ui": "^2.15.1",
  "@nuxthub/core": "^0.4.0",
  "nuxt": "^3.11.2"
},
"devDependencies": {
  "@nuxt/eslint-config": "^0.2.0",
  "eslint": "^8.57.0",
  "vue-tsc": "^2.0.7",
  "wrangler": "^3.45.0"
}

Below is the build log on my local machine

β„Ή Initializing prerenderer                                      nitro 12:56:52 AM
β„Ή Prerendering 1 routes                                         nitro 12:56:58 AM
  β”œβ”€ /api/_content/cache.1712258784361.json (9ms)                nitro 12:56:58 AM
  β”‚ └── Error: [500]
                                                                 nitro 12:56:58 AM
Errors prerendering:
  β”œβ”€ /api/_content/cache.1712258784361.json (9ms)                nitro 12:56:58 AM
  β”‚ └── Error: [500]
                                                                 nitro 12:56:58 AM

 ERROR  Exiting due to prerender errors.                               12:56:58 AM

  at prerender (node_modules/nitropack/dist/chunks/prerender.mjs:218:11)
  at async node_modules/nuxt/dist/index.mjs:3471:7
  at async build (node_modules/nuxt/dist/index.mjs:5001:5)
  at async Object.run (node_modules/nuxi/dist/chunks/build.mjs:95:5)
  at async runCommand$1 (node_modules/nuxi/dist/shared/nuxi.9edf0930.mjs:1648:16)
  at async runCommand$1 (node_modules/nuxi/dist/shared/nuxi.9edf0930.mjs:1639:11)
  at async runMain$1 (node_modules/nuxi/dist/shared/nuxi.9edf0930.mjs:1777:7)



 ERROR  Exiting due to prerender errors.                               12:56:58 AM

error: script "build" exited with code 1

For this one I had raised an issue in the @nuxthub/core repo. Here is the resolution.

How to update the nitro version? i dont see nitro in my package.json πŸ€”

You have to delete your lockfile (package-lock.json or pnpm-lock.yaml) and install your dependencies freshly.