Я использую Nextjs и хочу вызвать process.env со страницы. Я переопределил документ по умолчанию с помощью _document.js и написал это:
export default function Document() {
return (
<Html>
<Head>
<Script>{`console.info(process.env.NEXT_PUBLIC_ENV)`}</Script>
</Head>
</Html>
Это вызывает ошибку «Uncaught ReferenceError: процесс не определен» в консоли. Моя конечная цель — загрузить сценарий GA4 в производственную среду, а не в разработку. Я знаю, как это сделать, но меня смущает, почему process не определено. Он работает вне функции, но не внутри нее.
Почему?
Я отредактировал это. Это более понятно?
Вопрос не ясен, и вы используете process.env в чертовой браузерной среде, узнайте, что такое node и как он работает, прежде чем переходить к серверной платформе на основе узлов, которая иногда использует React.js.
@keinsell, не могли бы вы пояснить, почему вопрос неясен? для меня это очень ясно говорит о том, что я пытаюсь условно загрузить некоторые сценарии в зависимости от среды, и что ответов, предлагаемых в других местах в Интернете (под номерами 1–4 в моем списке), недостаточно.
Где запускается этот _document.js скрипт? Это в веб-браузере? Клиент (веб-браузер) представляет собой совершенно другую среду выполнения, чем сервер/сборщик, первый не имеет доступа к каким-либо свойствам, которые вы устанавливаете во втором, если вы их не внедрите. Вам нужен какой-то механизм для замены всех вхождений process.env... в вашем коде фактическим значением, когда оно связывается/отправляется клиенту. Не знаю, как это делается в next.js, но обычно это решается с помощью плагина.
@Леннхольм, спасибо! с помощью nextjs добавление «NEXT_PUBLIC_» к вашим переменным окружения должно внедрить их в сборку сервера. моя проблема (как указано в заголовке) заключается в том, что «процесс» не определен.
также @Lennholm _document.js работает на сервере





Это происходит потому, что объект process недоступен внутри встроенного скрипта. Он доступен только для функции, но не для элементов HTML и/или браузера. вместо этого создайте переменную в функции как -
export default function Document() {
const publicEnv= process.env.NEXT_PUBLIC_ENV;
return (
<Html>
<Head>
<Script>{`console.info(publicEnv)}</Script>
</Head>
</Html>
)
}
Вам следует перефразировать свой вопрос, чтобы лучше объяснить, чего вы хотите достичь и откуда возникла ошибка, которую вы упомянули в заголовке.