无法从.env-file访问API密钥

问题描述 投票:0回答:3

当尝试获取 server.js 时,我们在从 .env 文件访问 API 密钥时遇到问题。如果我们手动将 API 密钥添加到 server.js 中的 URL 中,它就可以工作,因此问题似乎是 server.js 和 .env-file 之间的连接。 我们已经用 npm 安装了 dotenv。 在 .env 文件中,我们这样编写密钥:

WEATHER_API_KEY = XXXXXXXXXXXX

有谁知道我们做错了什么吗?

import express from "express";
import cors from "cors";
import mongoose from "mongoose";
import crypto from "crypto";
import bcrypt from "bcrypt";
import request from "request";
import dotenv from "dotenv";
// import { stringify } from "querystring";

const mongoUrl = process.env.MONGO_URL || "mongodb://localhost/project-mongo";
mongoose.connect(mongoUrl, { useNewUrlParser: true, useUnifiedTopology: true });
mongoose.Promise = Promise;

const port = process.env.PORT || 8080;
const app = express();

dotenv.config();


app.get("/home", (req, res) => {
  let city = req.query.city;
  // const request = require("request");
  // const options = {
  //   url: `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${process.env.WEATHER_API_KEY}`,
  //   method: "GET",
  //   headers: {
  //     Accept: "application/json",
  //   },
  // };
  const key = "*******************";
  const requesturl = `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${key}`;
  request(requesturl, function (error, response, body) {
    let data = JSON.parse(body);
    console.log(response);
    if (response.statusCode === 200) {
      res.send(`The weather in ${city} is ${data.weather[0].description}`);
    } else {
      res.send(data.message);
    }
  });
  console.log(process.env.WEATHER_API_KEY);
});
javascript api-key openweathermap dotenv
3个回答
0
投票

你可以试试这个

import 'dotenv/config';

代替

import dotenv from "dotenv";
并删除
dotenv.config();
调用。

来源和解释:https://github.com/motdotla/dotenv#how-do-i-use-dotenv-with-import

并将请求 URL(您可能出于测试目的而更改)更新为

const requesturl = `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${process.env.key}`;

此外,尝试定义不带任何空格的密钥,尽管这不太可能是根本原因。

WEATHER_API_KEY="XXXXXXXXXXXX"

0
投票

虽然这个问题不是专门关于 React 的,但它可能对那些使用 React 的人有帮助。对于 React 应用程序,环境变量必须以 REACT_APP_ 前缀开头,否则它将无法工作。

REACT_APP_WEATHER_API_KEY="XXXXXXXXXXXX"


0
投票

如果您的

.env
文件是这样的:

OPENAI_API_KEY = "YOUR_CUSTOM_KEY"

导入

load_dotenv
find_dotenv

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

测试是否有效:

import os
import openai
from dotenv import load_dotenv, find_dotenv

_ = load_dotenv(find_dotenv())

openai.api_key = os.getenv("OPENAI_API_KEY")

print(openai.api_key)
© www.soinside.com 2019 - 2024. All rights reserved.