【问题标题】:Environment variables undefined using dotenv使用 dotenv 未定义的环境变量
【发布时间】:2021-01-02 03:46:31
【问题描述】:

我有一个使用我的特定spaceaccessToken 连接到Contentful 的文件。最近,我决定使用dotenv 包将keys 隐藏到.env 文件中。这是我的文件的样子:

import {createClient} from 'contentful';
require('dotenv').config();
//console.log('space = ', process.env.CONTENTFUL_SPACE);

const client = createClient({
  space: process.env.CONTENTFUL_SPACE,
  accessToken: process.env.CONTENTFUL_TOKEN
});

export default client;

由于某种原因,env 变量显示为未定义。目前,我的.env 文件位于根目录下。这是我项目的文件结构:

project
 client
  src
   service
    client.js <-- The file I pasted above
 node_modules
 .env
 package-lock.json
 package.json

我尝试过的事情:

  1. 卸载dotenv并重新安装
  2. 删除node_modules文件夹并重新安装所有依赖项
  3. .env 文件移到service 文件夹下,client 文件所在的文件夹中
  4. .env 文件中为我的环境变量使用了REACT_APP_* 前缀
  5. config 调用中指定路径

所有这些解决方案都来自其他stackoverflow 问题。几天来,我一直在这个问题上徘徊,在列出的解决方案中盘旋并寻找其他解决方案,但仍然没有弄清楚为什么我无法访问我的 env 变量!

【问题讨论】:

  • 您没有检查调用 .config 方法的返回值,根据文档,如果失败,它将是一个带有错误的对象。您应该添加一个最小的可重现示例,包括 .env 文件的内容。同样作为一条建议,乞求人们不要结束你的问题通常不会帮助它获得更好的接收(如果有相反的话)......
  • 酷,将检查并相应地更新我的问题。

标签: javascript environment-variables undefined dotenv


【解决方案1】:

因此,我尝试按照您构建示例项目的方式构建示例项目,但没有成功。我将 .env 文件移到 /service 文件夹下,它起作用了。 我的猜测是,要求 dot env 文件应该位于包装项目的主文件(根目录中的主文件)以及 .env 文件中。

【讨论】:

    【解决方案2】:

    尝试在配置中设置 .env 文件的路径。

    const dotenv = require('dotenv');
    dotenv.config({ path: '../../../.env' });
    
    

    编辑:配置路径

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 2020-03-27
      • 2020-02-14
      • 2020-08-09
      • 2021-08-15
      • 1970-01-01
      相关资源
      最近更新 更多