我有一个文件,它使用我的特定space
和accessToken
连接到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
我尝试过的东西:
- 已卸载
dotenv
并重新安装 - 已删除
node_modules
文件夹并重新安装所有依赖项 - 将
.env
文件移到存在client
文件的service
文件夹下 - 在
.env
文件中为我的env变量使用了REACT_APP_*
前缀 - 指定了
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"它会说未定义,分号可能是问题所在。