Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

462
Vistas
¿Cómo establecer la URL base según la variable de entorno en Next.js?

Tengo un backend de Strapi y una aplicación de frontend de Next.js implementada en DigitalOcean. En DigitalOcean se establece una variable de entorno para la interfaz: API_URL = ${APP_URL}/api

Busco esta variable para generar la url base:

 // constants.js export const BASE_URL = process.env.NODE_ENV === "production" ? process.env.API_URL : "http://localhost:1337";

Parece funcionar bien, la aplicación obtiene el contenido del backend en localhost y también en la implementación. El problema surge cuando trato de cargar imágenes cuya ruta debería ser la concatenación de la URL base y la ruta relativa obtenida. He creado una función utilitz para esto:

 // utilities.js import { BASE_URL } from "./constants"; export const getImageURL = (relPath) => `${BASE_URL}${relPath}`;

Cuando uso esta función para una etiqueta html img, se carga tanto en entornos de desarrollo como de producción:

<img src={getImageURL(homePage.Hero[0].Image.url)} />

Pero cuando trato de establecer un fondo para un div en el mismo componente, la URL base no está definida y la imagen no aparece en el sitio implementado (funciona bien en localhost).

No tengo idea de por qué la generación de URL está bien para una parte del código y no está bien para la otra.

El comando de compilación para implementar es: yarn build && next export -o _static

Aquí está el componente completo:

 import styles from "../styles/Home.module.css"; import { getImageURL } from "../lib/utilities"; import { useEffect } from "react"; import { BASE_URL } from "../lib/constants"; export default function Home({ homePage }) { console.log(BASE_URL); // undefined useEffect(() => { if (window) { console.log(BASE_URL); // undefined document.getElementById("container").style.backgroundImage = `url('${getImageURL(homePage.Hero[0].Image.url)}')`; // url is undefined/realtivepath } }); return ( <div id="container"> <img src={getImageURL(homePage.Hero[0].Image.url)} /> </div> ); } export const getStaticProps = async () => { const res = await fetch(`${BASE_URL}/home-page`); // OK for dev and deploy const homePage = await res.json(); return { props: { homePage, }, }; };
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

De forma predeterminada, Next.js no expone todas las variables de process.env.X , debido a problemas de seguridad, al navegador .

Para exponer la variable de entorno al navegador, debe tener un prefijo NEXT_PUBLIC_ en el nombre.

En su caso, cambie el nombre de API_URL a NEXT_PUBLIC_API_URL y utilícelo.

Para más información: https://nextjs.org/docs/basic-features/environment-variables

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda