【问题标题】:.env returns undefined for multiple files.env 为多个文件返回 undefined
【发布时间】:2020-05-14 13:18:56
【问题描述】:

我有两个使用 .env 的文件,都为变量返回 undefined,我现在尝试为前端和后端设置根 .env,但仍然是 .env 变量没有加载。

在前端,我尝试测试的任何 .env 变量都未定义,我检查了其他人使用的代码,并根据建议进一步修改,但未定义...

在前端我有

import React from "react";
import axios from "axios";
import { toast } from "react-toastify";
import "react-toastify/dist/ReactToastify.css";
import StripeCheckout from "react-stripe-checkout";

require('dotenv').config();


toast.configure();

const PaymentButton = ({ name, price, description }) => {

  console.log(process.env.PRIVATE_KEY);
  console.log(process.env.TESTING)

 const handleToken =   async (token, addresses) => {
    const response = await axios.post(
      "http://localhost:3000/checkout",
      { token, product: { name, price, description } }
    );

   const { status } = response.data;

   console.log("Response:", response.data);

    if (status === "success") {
      toast("Success! Check email for details", { type: "success" });
    } else {
      toast("Something went wrong", { type: "error" });
    }
  }

  return (
    <div className="container">
      <div className="product">
        <h1>{name}</h1>
        <h3>Product price:  ${price}</h3>
      </div>
      <StripeCheckout
        stripeKey= {process.env.PRIVATE_KEY}
        token={handleToken}
        amount={price * 100}
        name={name}
        // billingAddress
        // shippingAddress
      />
    </div>
  );
}


都返回未定义的

我的 .env 文件


PRIVATE_KEY = pk_test_FAKERUr

TESTING = Hello

TEST_KEY = sk_test_FAKEHIHI8pGQt


在后台

require('dotenv').config();
const cors = require('cors');
const express = require('express');
const stripe = require('stripe')(process.env.TEST_KEY);
const uuid = require('uuid/v4');


const app = express();

app.use(express.json());
app.use(cors());



app.post('/checkout', async (req, res) => {

    }

    res.json({ error, status });
});


查看文件结构

【问题讨论】:

  • 我一直在更新我的答案。

标签: node.js reactjs express npm environment-variables


【解决方案1】:

确保你的 .env 看起来像这样:

PRIVATE_KEY = pk_teff23f23

TESTING = Hello

TEST_KEY = sk_test_f32f23f23f23  FAKE  Qt

您只需要在您的根应用中添加required('dotenv').config()server.jsapp.js

现在从您的服务器上,您可以像下面的代码一样执行此操作:

// your dotenv in the first line
require('dotenv').config();
const cors = require('cors');
const express = require('express');
const stripe = require('stripe')(process.env.TEST_KEY);
const uuid = require('uuid/v4');


// console.log environment variable
console.log(process.env.PRIVATE_KEY);

确保您的require('dotenv').config(); 在第一行,并确保您的.env 文件与您的后端位于同一根目录中。

? 您的后端无法获取您的.env的唯一原因是因为您的.env 文件位于您的后端之外。 现在,将您的 .env 文件移动到您的后端文件夹中。

希望对你有帮助。

【讨论】:

  • 我尝试了所有建议,但仍然返回未定义,我总是对 .env 文件有问题...
  • 你的require你的.env在你的服务器的第一行,并确保你的.env文件与你的后端在同一个根目录中。
  • 所以我需要 2 个 .env 文件,一个用于前端文件夹,一个用于后端文件夹?
  • 我试过了,但还是有问题,也许 .env 对我来说只是在窃听?
  • 我想,如果你已经在你的后端文件夹中添加了.env 并将你的require('dotenv').config(); 放在你的server.js 的第一行,那么一定要先console.log 它。 `console.log 首先在你需要的 .env 下
猜你喜欢
  • 2021-08-15
  • 1970-01-01
  • 2020-03-25
  • 2022-10-04
  • 2023-02-25
  • 2018-02-04
  • 1970-01-01
  • 2017-06-16
  • 2019-02-22
相关资源
最近更新 更多