标签:reactjs node-js openshift next-js javascript
我正在部署一个节点项目,该项目使用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)
标签:reactjs,node-js,openshift,next-js,javascript 来源: https://codeday.me/bug/20191211/2105788.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。