我用的是NextJS。我需要创建三种类型的环境:
1.发展
1.分期
1.生产
我需要在每个env上运行。具体变量。
对于开发,我有.env
,对于生产,我有.env.production
,对于阶段,我有.env.staging
。我的处方看起来像这样:
"scripts": {
"dev": "next dev -p 3001",
"build": "next build",
"start": "next start",
},
用于模拟分段环境。我创建了这个:
"start:staging": "NODE_ENV=staging next dev -p 3001",
但是当我检查console.log(process.env.NODE_ENV, 'env variable');
时,我得到development
。
我做错了什么,如何得到正确的变量?
1条答案
按热度按时间dzhpxtsq1#
你运行的是
next dev
,这使得你的应用程序以开发模式运行,这就是为什么你得到development
。请访问https://nextjs.org/docs/api-reference/cli#development
如果你想使用next.js构建环境特性,你可以按照他们的文档https://nextjs.org/docs/basic-features/environment-variables#default-environment-variables.Basically,你可以有3个环境文件,本地,开发和生产,他们将在运行应用程序时使用下一个dev和下一个start。本地环境文件总是覆盖其他文件,不要将其提交到项目中,否则将不会使用开发和生产文件。
如果你想做你说的事情(开发,登台和生产),你将不得不自己覆盖下一个env。您可以使用dotenv来实现这一点。
我的一个项目使用了这种配置:https://github.com/RizziSilva/task-time-web。关键文件可以在环境目录next.config.js和server/dotenv.js中找到。重要的是要注意,这个项目是个人性质的,可能不完全符合您的具体要求。