【问题标题】:Why my environmental variable is returning undefined using parcel and react为什么我的环境变量使用包裹返回未定义并做出反应
【发布时间】:2019-12-05 01:09:35
【问题描述】:

当我尝试使用 React 和 Parcel 进行项目时,console.log(process.env) 返回一个空对象,但如果我向其中添加 API_Key 将返回 undefined

谁能告诉我怎么了?为什么我的环境变量返回 undefined

这是我的 json 包:

    "clear-build-cache": "rm -rf .cache/ dist/",
    "dev": "parcel src/index.html",
    "build": "parcel build index.html",
    "dev:mock": "cross-env OPEN-INV=mock parcel src/index.html",
    "format": "prettier --write \"src/**/*.{js,jsx}\"",
    "lint": "eslint \"src/**/*.{js,jsx}\" --quiet",
    "test": "echo \"Error: no test specified\" && exit 1"
  `},

here is my .env file which is next to the package .json
REACT_APP_API_KEY:"my api key"


console.log(process.env) // {}
console.log(process.env. REACT_APP_API_Key)// undefined

【问题讨论】:

    标签: reactjs environment-variables parceljs


    【解决方案1】:

    有两个问题。

    1。更改 .env 变量名称、值声明

    环境文件,.env 需要 NAME=VALUE 格式的值和名称。

    所以不是

    REACT_APP_API_KEY:"my api key"
    

    你需要做的

    REACT_APP_API_KEY=MyAPIKey
    

    参考Parcel .env documentation指向的.env USAGE documentation,它使用dotenv

    2。您需要完全按照您声明的方式引用环境变量。

    作为@Emanuele 的pointed here

    您需要完全按照声明的方式引用环境变量名称。 所以不是

    process.env. REACT_APP_API_Key
    

    将值引用为

    process.env. REACT_APP_API_KEY
    






    * 更新:使用dotenv * 配置环境变量

    当您使用 Parcel 时,您需要手动加载环境变量,使用 dotenv。 (create-react-app 会自动处理)。

    安装dotenv后,需要调用config()解析.env文件才能作为process.env.REACT_APP_API_KEY使用。

    参考下面的示例代码

    .env

    REACT_APP_API_KEY=API key from .env file
    

    App.js

    import React from "react";
    import { render } from "react-dom";
    import dotenv from "dotenv";
    
    dotenv.config();
    
    function App() {
      console.log(`process.env`, process.env);
      return <h1>{process.env.REACT_APP_API_KEY}</h1>;
    }
    
    render(<App />, document.getElementById("app"));
    

    您可以使用环境变量值查看控制台输出和显示的标题。

    您可以在沙盒中关注演示。

    ? 沙盒使用parceljs

    【讨论】:

    • 嗨,Sung,感谢您的回复。即使通过更改 .env o 这个 REACT_APP_API_KEY = 'my key' 进程.env.REACT_APP_KEY 也会返回未定义!!!
    • @nik.ss 对不起,我误解了您使用的是create-react-app,它会自动导入.env 文件。包裹不会自动导入.env AFAIK。所以我更新了答案,它使用了dotenv 和一个演示程序。
    • 嗨,宋,这是有道理的。我实际上使用的是 react 而不是 create-react-app 所以我将我的 .env 从 REACT_APP_API_KEY 更改为 API_KEY 并且它起作用了。非常感谢
    • 干得好@nik.ss。很高兴你能自己找到答案?
    【解决方案2】:

    首先,您使用的是 REACT_APP_API_Key 而不是 REACT_APP_API_KEY。可能是问题所在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多