You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB Realm运行S3Client报'emitWarning' is not a function错误原因

问题原因

MongoDB Realm 函数使用的是定制裁剪后的 Node.js 运行环境,移除了标准 Node.js 内置的全局 process.emitWarning 方法。而你使用的 @aws-sdk/client-s3 属于 AWS SDK v3 版本,其内部依赖(比如端点解析、配置校验模块)会默认调用 process.emitWarning 输出弃用提示、兼容性警告类信息,本地标准 Node.js 环境存在该方法所以运行正常,在 Realm 环境调用时就会抛出不存在该方法的 TypeError。

解决方案

  • 方案1:全局补全空的emitWarning实现(最简便,优先使用)
    在引入 AWS SDK 相关包之前,手动给process对象补上缺失的方法即可:
// 放在代码最开头执行
if (typeof process.emitWarning !== 'function') {
  process.emitWarning = () => {};
}

// 原有逻辑不变
const { S3Client } = require('@aws-sdk/client-s3')
const client = new S3Client({ region: 'us-east-1' })
  • 方案2:添加警告抑制环境变量
    如果补全方法后仍然有相关报错,可以在代码开头额外添加AWS SDK的警告抑制配置:
process.env.AWS_SDK_JS_SUPPRESS_MAINTENANCE_MODE_MESSAGE = '1';
process.env.AWS_SDK_JS_SUPPRESS_V3_MODE_WARNING = '1';
// 再补上emitWarning的空实现
if (typeof process.emitWarning !== 'function') {
  process.emitWarning = () => {};
}
  • 方案3:降级使用AWS SDK v2版本
    如果前两个方案都不生效,可以替换成aws-sdk v2版本的S3客户端,v2版本内部没有强制依赖emitWarning方法,在Realm环境下兼容性更好。

内容的提问来源于stack exchange,提问作者wristbands

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:36:03