问题描述
我有一个文件,它使用我的特定 Contentful
和 space
连接到 accesstoken
。最近,我决定使用 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
我尝试过的事情:
- 卸载
dotenv
并重新安装 - 删除了
node_modules
文件夹并重新安装了所有依赖项 - 已将
.env
文件移至service
文件所在的client
文件夹下 - 在
REACT_APP_*
文件中为我的环境变量使用了.env
前缀 - 在
config
调用中指定路径
所有这些解决方案都来自其他 stackoverflow
问题。我已经坚持了几天,在列出的解决方案中盘旋并寻找其他解决方案,但仍然没有弄清楚为什么我无法访问我的 env
变量!
解决方法
因此,我尝试按照您构建示例项目的方式构建示例项目,但没有奏效。我将 .env 文件移到 /service 文件夹下,它起作用了。 我的猜测是,要求 .env 文件应该位于包装项目的主文件(根目录中的主文件)以及 .env 文件中。
,尝试在配置中设置 .env 文件的路径。
const dotenv = require('dotenv');
dotenv.config({ path: '../../../.env' });
编辑:配置路径