Questo è un vero problema sottile con il codice lato server in nextjs.
L'errore è ovvio :stai cercando di eseguire codice lato server (query mongo) in un codice lato client. Quello che non è ovvio è la causa, perché sono sicuro che non hai sbagliato codice...
Dopo alcuni debug ho scoperto che questo errore viene generato se importi il tuo codice mongo e non lo usi. Vedi sotto per capire come evitarlo .
Esempi buoni e cattivi
Quindi, funziona bene:
import { findUsers } from '../lib/queries'
function Home({ users }) {
return (
<h1>Users list</h1>
//users.map and so on...
)
}
export async function getServerSideProps() {
const users = await findUsers()
return {
props: {
users: users
}
}
}
export default Home
Mentre questo genererà l'errore:
import { findUsers } from '../lib/queries'
function Home({ users }) {
return (
<h1>Users list</h1>
//users.map and so on...
)
}
export async function getServerSideProps() {
// call disabled to show the error
// const users = await findUsers()
return {
props: {
users: [] //returned an empty array to avoid other errors
}
}
}
export default Home
Come evitarlo
Per evitare questo errore, rimuovi qualsiasi importazione di codice lato server nei tuoi componenti se non li utilizzi in getServerSideProps
.