next.config.js 中的 publicRuntimeConfig 在 prod/staging 中始终未定义
publicRuntimeConfig in next.config.js is always undefined in prod/staging
我正在部署一个使用 next.js 的节点项目到我设置环境变量 MY_ENV 的 openshift。我已将 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.
感谢任何帮助。
UPDATE/FIX
publicRuntimeConfig
在更高的环境中未定义,因为它不是正在部署的包的一部分。
undefined Error
是否出现在页面中?
尝试从 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)
我正在部署一个使用 next.js 的节点项目到我设置环境变量 MY_ENV 的 openshift。我已将 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.
感谢任何帮助。
UPDATE/FIX
publicRuntimeConfig
在更高的环境中未定义,因为它不是正在部署的包的一部分。
undefined Error
是否出现在页面中?
尝试从 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)