Calma lá, é simples de resolver!
1- Não precisa usar o next.config.js, acredite, é mais simples que isso
2- Não precisa instalar a biblioteca DotEnv
Por isso mesmo foi a solução que eu adotei… é nativa do NextJS e muito simples de aplicar.
Passo 1
Pra ter chegado nesse erro, você já criou o aquivo .env.local e provavelmente usou o parametro MONGODB-URI=”” como no exemplo abaixo.
// file .env.local
MONGODB_URI='mongodb+srv://admin:<PASSWORD>@cluster0.zcxjukj.mongodb.net/?retryWrites=true&w=majority'
Mas aqui está o problema, o NextJS não transfere essa variável pro client, ela está somente no Server, por isso está passando como “undefined”.
Mas é simples de resolver… coloque NEXT_PUBLIC_ no nome da variável no .env.local, como no exemplo abaixo 👇
// file .env.local
NEXT_PUBLIC_MONGODB_URI='mongodb+srv://admin:<PASSWORD>@cluster0.zcxjukj.mongodb.net/?retryWrites=true&w=majority'
Pronto, agora você pode chamar a variável pelo process.env.
Basta acrescentar antes da chamada esse código mongoose.set(“strictQuery”, true);
Coloquei abaixo um trecho do código.
mongoose.set("strictQuery", true);
const connectMongo = async () => {
try {
const { connection } = await mongoose.connect(process.env.NEXT_PUBLIC_MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
<seu código aqui>
};
Lembre-se de reiniciar o servidor pra variável NEXT_INPUT ser definida e você poder consumir no seu código.
Top comments (0)