首页 > 解决方案 > 使用 dotenv 未定义的环境变量

问题描述

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

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. 在文件中使用了REACT_APP_*我的环境变量的前缀.env
  5. config调用中指定路径

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

标签: javascriptenvironment-variablesundefineddotenv

解决方案


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


推荐阅读