Cri*_*rez 1 environment-variables node.js next.js
我创建了一个新的 Next 项目,我想根据NODE_ENV
变量来管理应用程序行为。应用程序必须加载位于不同 .env 文件中的不同变量。耶。如果我加载NODE_ENV=development
,应用程序应该加载位于.env.development
文件中的变量。在 Next.js 中最有效和最安全的方法是什么?
在dev
脚本中,我传递了环境类型:
"scripts": {
"dev": "cross-env NODE_ENV=development next",
"build": "next build",
"start": "next start",
},
Run Code Online (Sandbox Code Playgroud)
在下一个配置中,我dotenv
根据package.jsonNODE_ENV
中dev
脚本中的变量传递从带有库的正确 .env 文件中加载环境变量。
"scripts": {
"dev": "cross-env NODE_ENV=development next",
"build": "next build",
"start": "next start",
},
Run Code Online (Sandbox Code Playgroud)
TITLE=modo development
Run Code Online (Sandbox Code Playgroud)
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;
},
});
Run Code Online (Sandbox Code Playgroud)
Nextjs
支持env中默认情况下无需使用webpack.DefinePlugin
,只需将它传递给env
财产next.config.js
。
所以你的代码将变成:
// next.conf.js
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({
env: {
VAR_1: process.env.VAR_1
...
// List all the variables that you want to expose to the client
}
});
Run Code Online (Sandbox Code Playgroud)
注意:这些 env 变量可能会暴露给客户端(如果您在应用程序页面之一中使用它们)。
例如,如果您process.env
包含机密,并且错误地在页面使用的页面/组件之一中使用了其中之一,则它们将位于下载到客户端的 js 文件中。
从 Next.js 9.4 开始,有一个内置的 .env 加载功能,请在此处阅读https://nextjs.org/docs/basic-features/environment-variables
归档时间: |
|
查看次数: |
3893 次 |
最近记录: |