MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

nextjs import ma non invocare la funzione genera Modulo non trovato:errore:impossibile risolvere 'dns'

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 .