.env возвращает неопределенное значение для нескольких файлов - PullRequest
0 голосов
/ 29 января 2020

У меня есть два файла, использующих .env , оба возвращают undefined для переменных, я попытался установить root .env для внешнего и внутреннего интерфейса, но все же .env переменные не загружаются.

во внешнем интерфейсе любые переменные .env, которые я пытаюсь проверить, оказались неопределенными, я проверил код, который используют другие люди, и еще больше изменил его, основываясь на совете, но он не определен ...

enter image description here

в передней части у меня есть

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


in backend

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 });
});


Просмотр структуры файла

enter image description here

1 Ответ

0 голосов
/ 29 января 2020

Убедитесь, что ваш .env выглядит так:

PRIVATE_KEY = pk_teff23f23

TESTING = Hello

TEST_KEY = sk_test_f32f23f23f23  FAKE  Qt

Вам нужно всего лишь добавить required('dotenv').config() в ваше приложение root. server.js или app.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 файл совпадает с root с вашим бэкэндом.

? Единственная причина, по которой ваш бэкэнд не может получите .env, потому что ваш .env файл находится за пределами вашей серверной части. Теперь , переместите файл .env в свою внутреннюю папку.

Надеюсь, он может вам помочь.

...