【发布时间】:2020-04-20 18:07:47
【问题描述】:
我想要什么
我创建了一个新的 Next 项目,我想根据 NODE_ENV 变量管理应用程序行为。应用程序必须加载位于不同 .env 文件中的不同变量。埃杰。如果我加载NODE_ENV=development,应用程序应该加载位于.env.development 文件中的变量。在 Next 中最有效和最安全的方法是什么。
我有什么
package.json
在dev 脚本中,我传递了环境类型:
"scripts": {
"dev": "cross-env NODE_ENV=development next",
"build": "next build",
"start": "next start",
},
next.config.js
在下一个配置中,我根据 NODE_ENV 变量在 package.json 中传递 devscript 从正确的 .env 文件和 dotenv 库加载环境变量。
const path = require('path');
const withOffline = require('next-offline');
const webpack = require('webpack');
require('dotenv').config({
path: path.resolve(
__dirname,
`.env.${process.env.NODE_ENV}`,
),
});
module.exports = withOffline({
webpack: (config) => {
// Returns environment variables as an object
const env = Object.keys(process.env).reduce((acc, curr) => {
acc[`process.env.${curr}`] = JSON.stringify(process.env[curr]);
return acc;
}, {});
// Allows you to create global constants which can be configured
// at compile time, which in our case is our environment variables
config.plugins.push(new webpack.DefinePlugin(env));
return config;
},
});
.env.development
TITLE=modo development
pages/index.js
function HomePage() {
return <div>{process.env.TITLE}</div>
}
export default HomePage
通过这种方法...
- 这是在 Next 中处理不同 .env 文件的最有效和最安全的方法吗?
【问题讨论】:
-
.env 文件必须加载
-
这是什么意思?我正在加载
.env.${process.env.NODE_ENV}中的next.config.js文件。 -
使用 env 文件获取配置值
-
你能举个例子吗。
标签: node.js environment-variables next.js