【问题标题】:Using dotenv for API keys in multiple JS files对多个 JS 文件中的 API 密钥使用 dotenv
【发布时间】:2021-02-23 16:41:54
【问题描述】:

我是网络编程的新手,但不是一般的编程。我使用 node.js 创建一个网站,并使用 dotenv 隐藏来自 github 的 API 信息,并且在理解某些内容时遇到了一些麻烦。

我的 .env 文件位于根目录并包含:

GOOGLE_CALENDAR_API_KEY=key_value

我使用 app.js 文件来设置和运行我的服务器并发送 index.html 文件。

//jshint esversion:6
const https = require('https');
const bodyParser = require("body-parser");
const express = require("express");
require("dotenv").config();

const app = express();

app.use(express.static("public"));

app.get("/", function(req, res) {
res.sendFile(__dirname + "/index.html");
});

app.listen(5000, function(req, res) {
    console.log("Listening on port 5000.");
});

然后我有另一个名为“custom.js”的脚本文件来运行我的大部分 web 应用程序。在里面,我尝试使用 process.env 来获取 API 密钥。

window.onload = function()
{
  const googleAPIkey = process.env.GOOGLE_CALEDAR_API_KEY;
.
.
.

但我收到错误“未捕获的 ReferenceError:未定义进程”

我还尝试将 require("dotenv").config() 行移至 custom.js 文件,但失败了。尝试将信息从一个文件访问到另一个文件时我做错了,但我不明白是什么。

任何帮助将不胜感激!

【问题讨论】:

标签: javascript node.js file dotenv


【解决方案1】:

据我了解,您尝试从客户端浏览器访问 node.js 应用程序的进程变量,这是不可能的。 process 变量只能在 node.js 应用程序范围内访问,而不能在运行客户端的浏览器中访问。

【讨论】:

  • 那么,您是说我需要在运行服务器的 app.js 文件中使用 api,而不是在客户端运行的 custom.js 文件?
  • 是的,只能访问node.js应用范围内的流程变量
【解决方案2】:

您还必须在第二个脚本文件中添加require("dotenv").config();

【讨论】:

  • 我试过了,但是有一个错误说“require”是未定义的。
  • 我认为您在客户端 javascript 上使用它。并且 NodeJs api 在客户端不起作用
【解决方案3】:

您似乎正在尝试访问客户端/前端的 Process 变量。您无法从客户端浏览器或机器访问这些变量

【讨论】:

    猜你喜欢
    • 2021-03-23
    • 2021-10-03
    • 2016-07-01
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 2019-12-18
    相关资源
    最近更新 更多