Node.js项目中Cloudinary配置无法读取.env环境变量如何解决
排查步骤
- 首先确认你已安装
dotenv依赖,且在所有使用process.env的代码执行前完成了dotenv的配置,注意配置代码顺序错误是最常见的问题,正确的代码顺序参考:
// 第一行就加载dotenv配置 require('dotenv').config() const cloudinary = require("cloudinary"); cloudinary.config({ cloud_name: process.env.CLOUD_NAME, api_key: process.env.CLOUD_API_KEY, api_secret: process.env.CLOUD_API_SECRET, });
- 确认
.env文件存放在项目根目录,和package.json文件同级,不要放在src等子目录下,否则dotenv默认无法读取。 - 检查
.env文件的变量书写格式,不要加多余的引号,等号两侧不要留空格,正确写法示例:
CLOUD_NAME=你的cloud名称 CLOUD_API_KEY=你的api_key值 CLOUD_API_SECRET=你的api_secret值
如果变量值外包裹了引号,dotenv会将引号识别为值的一部分,导致和Cloudinary的校验不匹配。
- 核对
.env内的变量名和代码中调用的process.env.xxx变量名完全一致,注意大小写区分,Node.js环境变量对大小写敏感。 - 如果你使用的是Next.js、Vite这类自带环境变量处理逻辑的框架,要符合框架的环境变量规则:比如Vite客户端可访问的变量需要加
VITE_前缀,Next.js客户端组件可访问的变量需要加NEXT_PUBLIC_前缀;注意Cloudinary的密钥类参数不建议暴露在客户端,相关配置逻辑仅可在服务端代码中执行。 - 可以在
cloudinary.config执行前添加打印代码console.log(process.env.CLOUD_NAME, process.env.CLOUD_API_KEY, process.env.CLOUD_API_SECRET),如果输出为undefined则说明环境变量未正确加载,按上述步骤逐一排查即可。
内容的提问来源于stack exchange,提问作者Hessah
相关产品推荐
相关产品推荐

