Configuración en tiempo de ejecución (Runtime Config)

Advertencia:

Para agregar configuración en tiempo de ejecución a tu aplicación, abre next.config.js y añade las configuraciones publicRuntimeConfig y serverRuntimeConfig:

next.config.js
module.exports = {
  serverRuntimeConfig: {
    // Solo estará disponible en el lado del servidor
    mySecret: 'secret',
    secondSecret: process.env.SECOND_SECRET, // Pasar a través de variables de entorno
  },
  publicRuntimeConfig: {
    // Estará disponible tanto en servidor como en cliente
    staticFolder: '/static',
  },
}

Coloca cualquier configuración de tiempo de ejecución exclusiva del servidor bajo serverRuntimeConfig.

Cualquier elemento accesible tanto para código del cliente como del servidor debe estar bajo publicRuntimeConfig.

Una página que dependa de publicRuntimeConfig debe usar getInitialProps o getServerSideProps, o tu aplicación debe tener un App Personalizado con getInitialProps para excluirse de la Optimización Estática Automática. La configuración en tiempo de ejecución no estará disponible para ninguna página (o componente en una página) que no sea renderizada en el servidor.

Para acceder a las configuraciones de tiempo de ejecución en tu aplicación, usa next/config de la siguiente manera:

import getConfig from 'next/config'
import Image from 'next/image'

// Solo contiene serverRuntimeConfig y publicRuntimeConfig
const { serverRuntimeConfig, publicRuntimeConfig } = getConfig()
// Solo estará disponible en el lado del servidor
console.log(serverRuntimeConfig.mySecret)
// Estará disponible tanto en servidor como en cliente
console.log(publicRuntimeConfig.staticFolder)

function MyImage() {
  return (
    <div>
      <Image
        src={`${publicRuntimeConfig.staticFolder}/logo.png`}
        alt="logo"
        layout="fill"
      />
    </div>
  )
}

export default MyImage