publicRuntimeConfig в next.config.js всегда не определен в prod / staging - PullRequest
4 голосов
/ 12 марта 2019

Я развертываю проект узла, который использует next.js для openshift, где я устанавливаю переменную среды MY_ENV.Я добавил конфигурацию publicRuntimeConfig в next.config.js для доступа к ней на стороне клиента.Он работает на моем локальном компьютере, но когда его контейнер и развернутый publicRuntimeConfig равен undefined.

Вот моя конфигурация из next.config.js

module.exports = {
  publicRuntimeConfig: { // Will be available on both server and client
      isProd: process.env.MY_ENV ? process.env.MY_ENV.includes('prod'): false,
      isStaging: process.env.MY_ENV ? process.env.MY_ENV.includes('staging') : false
    },
  webpack: (config, { dev }) => {
    const eslintRule = {
      test: /\.js$/,
      enforce: 'pre',
      exclude: /node_modules/,
      loader: 'eslint-loader',
      options: {
        emitWarning: dev,
      },
    };
    const cssRule = {
      test: /\.css$/,
      use: {
        loader: 'css-loader',
        options: {
          sourceMap: false,
          minimize: true,
        },
      },
    };

    config.node = {
      fs: 'empty'
    };

    config.module.rules.push(eslintRule);
    config.module.rules.push(cssRule);
    return config;
  }
};

Вот как я пытаюсьчтобы получить publicRuntimeConfig на моих страницах.

import getConfig from 'next/config';
const { publicRuntimeConfig } = getConfig();

console.log(publicRuntimeConfig.isProd); //publicRuntimeConfig is undefined here. 

Любая помощь приветствуется.

ОБНОВЛЕНИЕ / ИСПРАВЛЕНИЕ

publicRuntimeConfig не было определено в более высоких средах, поскольку оно не было частью развертываемого пакета.

1 Ответ

2 голосов
/ 12 марта 2019

Встречается ли undefined Error на страницах?

Как насчет попытки getConfig из next/config?

import getConfig from 'next/config';

const getNodeEnv = () => {
  const { publicRuntimeConfig } = getConfig();

  const isProd = publicRuntimeConfig.isProd || false;
  const isStaging = publicRuntimeConfig. isStaging || false;

  return { isProd, isStaging }
};

const env = getNodeEnv()

console.log(env)
...