【问题标题】:React environment variable not working in dev反应环境变量在开发中不起作用
【发布时间】:2021-04-16 23:46:52
【问题描述】:

请让我摆脱痛苦。我看到许多其他人遇到了同样的问题,但我没有找到解决方案。

我正在尝试将我的敏感密钥放入特定于环境的文件(.env.development、.env.staging 等)。如果我把它们放在 .env 中,这些键可以正常工作,但我需要这个文件来处理一些其他必须推送到源代码管理的项目。所有文件都在根目录下(我发现这是一个常见错误)。 webpack有什么问题吗?每次进行更改时,我都会重新启动服务器实例。

const express = require('express');
const path = require('path');
const app = express();
require('dotenv').config();

console.log('ENV', process.env.NODE_ENV);   // this returns "development"
console.log('Hello?', process.env.REACT_APP_HELLO);  // this returns "undefined"

如前所述,我正确地呈现环境。

 "start": "SET NODE_ENV=development&& node server/index.js",

来自 package.json

REACT_APP_HELLO=BLAH

来自 .env.development

【问题讨论】:

    标签: node.js reactjs environment-variables


    【解决方案1】:

    由于set,我假设您在 cmd.exe 中。在&& 之前添加一个空格:"start": "set NODE_ENV=development && node server",(无需指定index.js。在非Windows 系统上,这将是NODE_ENV=development node server

    编辑:

    要使.env.development 正常工作,请将 dotenv 行更改为:require('dotenv').config({ path: '.env.' + process.env.NODE_ENV })。 (source),或custom-env 包:require('custom-env').env(process.env.NODE_ENV)。不过,它们都不是从常规的.env 继承的,所以如果你需要,请查看dotenv-flow。我还没有尝试过最后一个包,但它似乎具有最多的功能和最少的配置量。

    【讨论】:

    • 非常感谢您的回复!实际上,我认为您对空格的看法是错误的-最近我有一些事情单独失败,因为在变量的末尾添加了一个空格。无论如何,我确实尝试过 - 结果相同。是的,我在 Windows 上。
    • && 不是环境变量的一部分,它是一个运算符。它的意思是“做左边的事,如果没有失败,那就做右边的事”。但我看到另一个问题,我会更新我的答案。
    • 正确 - 我完全明白了。我的意思是,我最近做了类似的事情,结果变量中有一个空格,而 & 符号之前有一个空格。
    • 非常感谢!这正是问题所在!顺便说一句,我还尝试使用 & 符号之前的空格 - 这绝对打破了它。
    • 奇怪,这不是我所期望的(但我也几乎从不使用 Windows,所以我可能会忘记一些东西)。无论如何,我很高兴环境问题得到了解决!
    猜你喜欢
    • 2020-07-14
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 2021-12-28
    • 2015-06-16
    • 2021-11-13
    • 2020-11-25
    相关资源
    最近更新 更多