使用dotenv未定义环境变量



我有一个文件,它使用我的特定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文件移到存在client文件的service文件夹下
  4. .env文件中为我的env变量使用了REACT_APP_*前缀
  5. 指定了config调用中的路径

所有这些解决方案都来自其他stackoverflow问题。我已经在这个问题上坚持了几天,在列出的解决方案中周旋,寻找其他解决方案,但仍然没有弄清楚为什么我不能访问我的env变量!

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

这解决了我的问题。

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

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

编辑:配置路径

所以我尝试用与构建示例项目相同的方式构建它,但没有成功。我把.env文件移到/service文件夹下,它起作用了。我的猜测是,要求dot-env文件应该与.env文件一起位于包装项目的主文件(根目录中的主文件(上。

require("dotenv").config({
path: path.resolve(__dirname, '../../../.env')
});

这将解决您的问题

确保您将env变量设置为"username=exampleusername";,如果设置";用户名:exampleusername"它会说未定义,分号可能是问题所在。

最新更新