Strapi 4.11.5集成Cloudinary失败:媒体仍存本地文件夹求助
Strapi集成Cloudinary失败排查方案
以下是针对「媒体始终上传到本地public/uploads而非Cloudinary」问题的排查步骤:
1. 确认环境变量加载正常
- 检查项目根目录的
.env文件,确保CLOUDINARY_NAME、CLOUDINARY_KEY、CLOUDINARY_SECRET三个变量的拼写、值完全正确(注意Cloudinary的cloud name是控制台里的「Cloud name」,不是账号名)。 - 可在
./config/plugins.js中临时添加日志输出,验证变量是否被正确读取:
重启Strapi后查看控制台,确认输出的变量值和Cloudinary后台一致。module.exports = ({ env }) => { console.log('Cloudinary Name:', env("CLOUDINARY_NAME")); // 临时打印验证 return { upload: { config: { provider: "cloudinary", providerOptions: { cloud_name: env("CLOUDINARY_NAME"), api_key: env("CLOUDINARY_KEY"), api_secret: env("CLOUDINARY_SECRET"), }, actionOptions: { upload: {}, uploadStream: {}, delete: {}, }, }, }, }; };
2. 验证配置文件的有效性
- 确认
plugins.js位于项目根目录的./config/文件夹下;如果是生产环境,需要将配置放在./config/production/plugins.js中(Strapi会根据环境加载对应目录的配置)。 - 检查配置文件语法:确保没有遗漏逗号、引号配对错误,可借助JSON校验工具快速排查。
3. 确认插件安装正确
- 执行命令
npm list @strapi/provider-upload-cloudinary,查看插件是否安装成功,且版本与Strapi核心版本(4.11.5)完全一致。 - 如果版本不匹配或安装异常,重新安装插件:
必要时可删除npm uninstall @strapi/provider-upload-cloudinary npm install @strapi/provider-upload-cloudinary@4.11.5node_modules和package-lock.json后重新执行npm install。
4. 确保配置修改后重启Strapi
- 开发模式下,修改配置文件后必须完全重启Strapi服务(不是热重载),否则新配置不会生效。
- 生产模式下,需要重新构建项目并启动:
npm run build npm run start
5. 检查Cloudinary账号设置
- 登录Cloudinary控制台,确认你的API密钥拥有「上传」权限,没有设置IP白名单限制(如果有,需将服务器IP加入白名单)。
- 上传测试文件后,直接查看Cloudinary媒体库,确认是否有文件被上传(有时可能Strapi返回路径显示异常,但实际已上传成功)。
6. 排查自定义代码干扰
- 检查项目中是否存在自定义的上传逻辑,比如
src/api/upload/services/upload.js或其他自定义插件,这些代码可能覆盖了默认的Cloudinary上传行为。
7. 查看详细日志
- 启动Strapi时开启verbose模式,查看更多细节:
上传文件后,查看控制台输出,寻找与Cloudinary相关的错误或警告信息(比如认证失败、请求超时等,即使前端无报错,日志中可能有线索)。npm run develop -- --verbose
内容的提问来源于stack exchange,提问作者Harry Vu
相关产品推荐
相关产品推荐

