To naprawdę subtelny problem z kodem po stronie serwera w nextjs.
Błąd jest oczywisty :próbujesz wykonać kod po stronie serwera (zapytanie mongo) w kodzie po stronie klienta. To, co nie jest oczywiste, to przyczyna, ponieważ jestem pewien, że nie masz złego kodu...
Po pewnym debugowaniu odkryłem, że ten błąd jest zgłaszany, jeśli zaimportujesz swój kod mongo i nie użyjesz go. Zobacz poniżej, aby dowiedzieć się, jak tego uniknąć .
Dobre i złe przykłady
To działa dobrze:
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
Chociaż spowoduje to wyświetlenie błędu:
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
Jak tego uniknąć
Aby uniknąć tego błędu, po prostu usuń wszelkie importy kodu po stronie serwera w Twoich komponentach, jeśli nie używasz to w getServerSideProps
.