javascript-在prod / staging中始终未定义next.config.js中的publicRuntimeConfig

前端之家收集整理的这篇文章主要介绍了javascript-在prod / staging中始终未定义next.config.js中的publicRuntimeConfig 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在部署一个节点项目,该项目使用next.js进行openshift设置环境变量MY_ENV.我已经将publicRuntimeConfig配置添加到next.config.js以便在客户端访问它.它在我的本地环境中有效,但是当其容器化和部署的publicRuntimeConfig未定义时.

这是我来自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. 

任何帮助表示赞赏.

UPDATE/FIX

在更高环境中,未定义publicRuntimeConfig,因为它不是要部署的软件包的一部分.

最佳答案
页面中是否出现未定义的错误

尝试从next / config获取getConfig怎么样?

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)

猜你在找的JavaScript相关文章