В Next.js параметры publicRuntimeConfig и serverRuntimeConfig используются для настройки приложения, но они отличаются по доступности и назначению от обычных переменных среды. Давайте рассмотрим каждый из них подробнее:

publicRuntimeConfig

Назначение: Хранит конфигурационные значения, которые доступны как на серверной, так и на клиентской стороне. Это идеально для настроек, таких как API endpoints, базовые URL-адреса или информацию о теме.

Доступность: Значения сериализуются в скомпилированный JavaScript-бандл во время серверного рендеринга. Это означает, что они легко доступны в любом компоненте на клиентской стороне.

Пример использования:

// next.config.js
module.exports = {
  publicRuntimeConfig: {
    API_URL: process.env.API_URL,
    THEME: 'light',
  },
};
// В компоненте
import getConfig from 'next/config';
 
const { publicRuntimeConfig } = getConfig();
console.log(publicRuntimeConfig.API_URL);

serverRuntimeConfig

Назначение: Хранит конфигурационные значения, которые доступны только на серверной стороне. Это идеально для хранения чувствительной информации, так как она никогда не будет доступна клиенту.

Доступность: Значения доступны только в серверном коде и не передаются клиенту.

Пример использования:

// next.config.js
module.exports = {
  serverRuntimeConfig: {
    SECRET_KEY: process.env.SECRET_KEY,
  },
};
// В серверном коде
import getConfig from 'next/config';
 
const { serverRuntimeConfig } = getConfig();
console.log(serverRuntimeConfig.SECRET_KEY);

Отличия от переменных среды

Переменные среды: Устанавливаются на уровне системы или развертывания и доступны во время выполнения как на серверной, так и на клиентской стороне. Они могут быть доступны через process.env.

publicRuntimeConfig: Предоставляет контролируемый доступ к конфигурационным значениям на клиентской стороне без необходимости использования переменных среды.

serverRuntimeConfig: Предоставляет способ хранения чувствительных данных, которые никогда не будут доступны клиенту, что делает их более безопасными по сравнению с переменными среды, которые могут быть доступны на клиентской стороне, если они не имеют префикса NEXT_PUBLIC_.

Использование publicRuntimeConfig и serverRuntimeConfig позволяет более гибко управлять конфигурацией приложения, обеспечивая безопасность и удобство доступа к различным настройкам.


Назад