MERN栈ES6导入Cloudinary上传图片报upload未定义错误求解
问题解决方案
你遇到的TypeError: Cannot read property 'upload' of undefined报错确实是ES6模块下Cloudinary导入方式不匹配导致的,对应CommonJS的const cloudinary = require("cloudinary").v2;写法,ES6模块的正确导入方式如下:
import { v2 as cloudinary } from 'cloudinary';
以上写法会将Cloudinary SDK的v2版本导出重命名为cloudinary变量,和教程中CommonJS导入的变量用法完全一致,后续的配置、上传逻辑不需要做任何修改。
配套排查项
- 导入后确认你的Cloudinary配置代码结构正确:
cloudinary.config({ cloud_name: '你的云名称', api_key: '你的API密钥', api_secret: '你的API Secret' });
确保三个配置字段的名称、取值和Cloudinary后台给出的参数完全一致,不要出现拼写错误。
- 确认
createBlog控制器添加了async修饰符,上传方法的await语法才可以正常生效,示例结构如下:
export const createBlog = async (req, res) => { // 其他业务逻辑 const uploadRes = await cloudinary.uploader.upload(req.body.image, { upload_preset: 'my_blogwebsite', folder: 'my_blogwebsite' }) }
- 若导入后仍报错,可升级Cloudinary SDK到最新版本:
npm install cloudinary@latest
内容的提问来源于stack exchange,提问作者Bhavesh Damor
相关产品推荐
相关产品推荐

