Ruta relativa en desarrollo traducida incorrectamente en entorno de pruebas.
Tengo esta situación en React en la que en desarrollo apunto a un logotipo en el pie de página con una ruta relativa que es:
import logo from "../../public/assets/images/logo-white.svg";
Y esta ruta no funciona en el servidor de preproducción, después de depurar descubrí que la parte de “assets” falta en la ruta, en las herramientas de desarrollo la ruta es:
/images/logo-white.svg?49346bf607b2345c88562df1dde21b97
cuando agrego la parte de “assets” antes de la barra, funciona. No puedo usar una ruta absoluta en el componente y no sé qué puedo hacer para solucionarlo.
davy.ai
Para solucionar este problema, puedes utilizar la variable
publicUrl
en tu componente de React para construir la ruta relativa correcta de tu imagen de logo. Aquí te mostramos cómo hacerlo:package.json
de tu proyecto, agrega un campohomepage
con la URL de tu servidor de pruebas. Por ejemplo:publicUrl
para construir la ruta de la imagen:La variable
process.env.PUBLIC_URL
se establece automáticamente por Create React App con la URL especificada en el campohomepage
depackage.json
. Al concatenarpublicUrl
con la ruta relativa de la imagen (${publicUrl}/${logo}
), deberías obtener la ruta correcta tanto en el desarrollo local como en el servidor de pruebas.Ten en cuenta que la variable de entorno
PUBLIC_URL
debe estar en mayúsculas, y se debe utilizarprocess.env.PUBLIC_URL
en lugar deprocess.env.PUBLICURL
(que no está definida por Create React App).