您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。 信息
本主题介绍了您在使用 Edge Microgateway 时可能会遇到的错误和警告。
一般应用错误
HTTP 500,在错误处理程序中失败 - 大多数错误都会有此编号,目标返回的一些错误也会有此编号。特别是,errors-middleware.js 在整个 microgateway-core 模块中使用。使用时,它会使用 Edge Microgateway
logger object: logger.error(err, 'failed in error handler');将 statusCodes 写入日志记录。 对于从目标接收到的介于 100 到 300 之间的代码,errors-middleware.js 会将 statusCode 重写为 500 以返回给客户端。HTTP 404 - 您可能会看到此状态作为堆栈轨迹生成,并显示消息
no match found for [API_path_name]。
模块错误和警告
您可以使用此信息来配置提醒,以便监控和管理 Edge Microgateway 部署。
以下术语显示在错误参考的“处理程序”下,用于指明 Edge Microgateway 中各种错误的处理方式。
- assert:通常,当断言评估失败时,Edge Microgateway 会停止运行。不过,情况可能并非总是如此,因为“断言”会抛出可能会被捕获的异常。
- 抛出:可能导致系统停止运行。
- 回调:错误会传递给回调,系统可能会继续运行。
| 类型 | 消息 | Handler | 备注 |
|---|---|---|---|
microgateway 模块 |
|||
| 错误 | 必须提供组织信息 | assert | assert(options.org,"org is required"); |
| 错误 | 必须提供 env | assert | assert(options.env,"env is required") |
| 错误 | 必须提供用户名 | assert | assert(options.username || options.token,"username is required"); |
| 错误 | 必须提供密码 | assert | assert(options.password || options.token,"password is required") |
| 错误 | 必须提供组织信息 | assert | assert(options.org,"org is required"); |
| 错误 | 必须提供 env | assert | assert(options.env,"env is required") |
| 错误 | 必须提供用户名 | assert | assert(options.username || options.token,"username is required"); |
| 错误 | 必须提供密码 | assert | assert(options.password || options.token,"password is required") |
| 错误 | 必须提供组织信息 | assert | assert(options.org,"org is required"); |
| 错误 | 必须提供 env | assert | assert(options.env,"env is required") |
| 错误 | 必须提供组织信息 | assert | assert(options.org,"org is required"); |
| 错误 | 必须提供 env | assert | assert(options.env,"env is required") |
| 错误 | 必须提供用户名 | assert | assert(options.username, 'username is required'); |
| 错误 | 必须提供密码 | assert | assert(options.password, 'password is required'); |
| 错误 | 必须提供组织信息 | assert | assert(options.org, 'org is required'); |
| 错误 | 必须提供 env | assert | assert(options.env, 'env is required'); |
| 错误 | 必须具有分配的目标文件 | assert | assert(targetFile, '必须有分配的目标文件') |
| 错误 | 必须具有密钥 | assert | assert(key, 'must have a key'); |
| 错误 | 必须具有 Secret | assert | assert(secret, 'must have a secret'); |
| 错误 | 必须配置 dir | assert | assert(dir, 'dir must be configured') |
| 错误 | 必须提供回调 | assert | assert(callback, 'callback must be present') |
| 错误 | 必须提供用户名 | assert | assert(options.username, 'username is required'); |
| 错误 | 必须提供密码 | assert | assert(options.password, 'password is required'); |
| 错误 | 必须提供组织信息 | assert | assert(options.org, 'org is required'); |
| 错误 | 必须提供 env | assert | assert(options.env, 'env is required'); |
| 错误 | 必须提供 runtimeUrl | assert | assert(options.runtimeUrl, 'runtimeUrl is required'); |
| 错误 | mgmtUrl 为必填项 | assert | assert(options.mgmtUrl, 'mgmtUrl is required'); |
| 错误 | 必须提供文件 | assert | assert(options.file,"file is required") |
| 错误 | 必须具有目标 | assert | assert(options.target, 'must have target'); |
| 错误 | 插件未配置 | assert | assert(config.edgemicro.plugins, 'plugins not configured'); |
| 错误 | plugin dir does not exist: + pluginDir | assert | assert(fs.existsSync(pluginDir), 'plugin dir does not exist: ' + pluginDir); |
| 错误 | plugin dir is not a directory: + pluginDir | assert | assert(stat.isDirectory(), 'plugin dir is not a directory: ' + pluginDir); |
| 错误 | 读取插件目录时出错:+ pluginDir | assert | assert(dirs, 'error reading plugin dir: ' + pluginDir); |
| 错误 | 必须具有令牌 | assert | assert(token, 'must have a token'); |
| 错误 | configpath 不能为空 | assert | assert(config, 'configpath can't be empty'); |
| 错误 | 必须具有 EDGEMICRO_KEY | assert | assert(key, 'must have EDGEMICRO_KEY'); |
| 错误 | 必须具有 EDGEMICRO_SECRET | assert | assert(secret, 'must have EDGEMICRO_SECRET'); |
| 错误 | 配置不存在 | 抛出 | 与 YAML 文件相关 |
| 错误 | edgemicro 似乎已在运行。 | console.error | 尝试覆盖 .sock 文件 |
| 错误 | 未能检查配置是否发生更改。将在以下时间后重试 | console.error | 边缘通信存在问题 |
| 错误 | 如果服务器未运行,可能是因为之前启动时关闭不正确。 | console.error | |
| 错误 | 缺少 %s,请运行 | console.error | 缺少 (.*),请运行 |
| 错误 | 重新加载 edgemicro 失败 | console.error | 命令级 |
| 错误 | 未能成功停止 edgemicro | console.error | 命令级 |
| 错误 | “尝试移除 '” + ipcPath + “' 并重新开始” | console.error | |
| 错误 | “缓存配置”+ 缓存 +“不存在。正在退出。” | console.error | |
| 错误 | 无法写入配置文件: | console.error | 配置将失败 |
| 错误 | 配置文件未下载: | console.error | 配置将失败 |
| 错误 | 边缘微服务未能启动 | console.error | 不应处于运行状态 |
| 错误 | edgemicro 未运行。 | console.error | 检查进程,它不应列出 |
| 错误 | 必须提供 env | console.error | 运行所需的环境变量 |
| 错误 | 错误 - 正在编辑 apiproxy Callout.xml | console.error | 文件访问权限 |
| 错误 | 错误 - 编辑 apiproxy default.xml | console.error | 文件访问权限 |
| 错误 | 检查证书时出错。正在安装新证书。 | console.error | 无法使用公钥 |
| 错误 | 检索组织的区域时出错 | console.error | key-gen.js、cert-lib.js 和 private.js |
| 错误 | 上传凭据时出错 | console.error | 无法将公钥与 Edge 同步 |
| 错误 | 失败 | console.error | key-gen.js |
| 错误 | 未能初始化 configpath 文件 %s | console.error | 配置未加载 |
| 错误 | 来自地区 API 的响应无效 | console.error | key-gen.js、cert-lib.js 和 private.js |
| 错误 | 必须提供密钥 | console.error | 参数 |
| 错误 | 必须提供组织信息 | console.error | 参数 |
| 错误 | 端口不可用。 | console.error | 参数 |
| 错误 | 必须提供密钥 | console.error | 参数 |
| 错误 | 网址协议不受支持: | console.error | 配置信息表明互联网协议不在 Edge Microgateway 的范围内 |
| 错误 | 验证分析负面情况:失败 | console.error | 可能崩溃/失败 |
| 错误 | 使用载荷验证分析:失败 | console.error | 可能崩溃/失败 |
| 错误 | 验证引导网址的可用性:失败 | console.error | 可能崩溃/失败 |
| 错误 | 验证 jwt_public_key 是否可用:失败 | console.error | 可能崩溃/失败 |
| 错误 | 验证商品库存状况:失败 | console.error | 可能崩溃/失败 |
| 错误 | 验证已配置商品的配额:失败 | console.error | 可能崩溃/失败 |
| 警告 | 未能从网关检索到配置。继续操作,将尝试使用缓存的副本。 | console.error | |
| 警告 | 您的组织中已存在 KVM | console.log | |
| 警告 | 已部署 | console.log | |
| 警告 | 找不到序列化插件: | console.warn | |
| 警告 | pluginDir %s 不存在 | console.log | pluginDir (.*) 不存在 |
microgateway-core 模块 |
|||
| 错误 | 配置未初始化 | assert | assert(config, 'config not initialized') |
| 错误 | 必须具有配置 | assert | assert(config, ' must have a config') |
| 错误 | 必须具有配置 | assert | assert(config, 'must have config') |
| 错误 | 配置必须具有 uid | assert | assert(config.uid, 'config must have uid'); |
| 错误 | 必须在配置中包含 config.edgemicro.logging | assert | assert(logConfig, 'must have config.edgemicro.logging in config'); |
| 错误 | 必须具有请求方法 | assert | assert(httpLibrary.request, 'must have request method'); |
| 错误 | 必须在内存中加载插件 | assert | assert(options.plugin, "must have plugin loaded in memory"); |
| 错误 | init 必须是一个函数 | assert | assert(_.isFunction(options.plugin.init), 'init must be a function'); |
| 错误 | 必须具有插件名称 | assert | assert(options.pluginName, "must have plugin name"); |
| 错误 | 忽略无效的插件处理程序 + 名称 | assert | assert(_.isObject(middleware), 'ignoring invalid plugin handlers ' + name); |
| 错误 | 选项必须包含配置 | assert | assert(config, 'options must contain config') |
| 错误 | 插件必须具有名称 | assert | assert(name,"plugin must have a name") |
| 错误 | 名称必须是字符串 | assert | assert(_.isString(name),"name must be a string"); |
| 错误 | 插件必须是函数 | assert | assert(_.isFunction(plugin),"plugin must be a function(config,logger,stats){return {onresponse:function(req,res,data,next){}}}"); |
| 错误 | 必须具有密钥 | assert | assert(key, 'must have a key'); |
| 错误 | 必须具有 Secret | assert | assert(secret, 'must have a secret'); |
| 错误 | 必须具有源配置目录 | assert | assert(source, 'must have a source config directory'); |
| 错误 | 加载插件时出错 | console.error | 插件未加载 |
| 错误 | 在错误处理程序中失败 | 回调 | HTTP server.on() 函数 |
| 错误 | 标头长度超过允许的大小 | HTTP 错误 | 无法运行插件 |
| 错误 | 在完成工作之前响应已结束 | logger.error | 目标插件未运行 |
| 错误 | 处理程序抛出了异常 | 回调 | 捕获来自插件的错误(捕获) |
| 错误 | 启动 Edge Micro 时出错 | 回调 | Edge Microgateway 未启动 |
| 错误 | 插件必须是函数 | 抛出 | |
| 警告 | console.error | 警告 | 日志写入 |
| 警告 | targetRequest 错误 | 调用目标错误处理 | 与目标连接时出现 HTTP 客户端错误 |
| 警告 | targetResponse 错误 | 调用目标错误处理 | 与目标服务器连接时出现 HTTP 目标服务器错误(如客户端中所示) |
microgateway-config 模块 |
|||
| 错误 | allow_message | assert | assert(+config.quota.allow > 0, allow_message); |
| 错误 | 配置不存在 | 抛出 | 配置 yaml 文件 |
| 错误 | 配置为空 | 抛出 | 配置 yaml 文件 |
| 错误 | 配置不是文件 | 抛出 | 配置 yaml 文件 |
| 错误 | config is not defined | assert | assert(config, 'config is not defined'); |
| 错误 | config.analytics.batchSize 无效 | assert | assert(+config.analytics.batchSize > 0, 'config.analytics.batchSize is invalid'); |
| 错误 | config.analytics.batchSize 不是数字 | assert | assert(typeof config.analytics.batchSize === 'number', 'config.analytics.batchSize is not a number'); |
| 错误 | config.analytics.bufferSize 无效 | assert | assert(+config.analytics.bufferSize > 0, 'config.analytics.bufferSize is invalid'); |
| 错误 | config.analytics.bufferSize 不是数字 | assert | assert(typeof config.analytics.bufferSize === 'number', 'config.analytics.bufferSize is not a number'); |
| 错误 | config.analytics.flushInterval 无效 | assert | assert(+config.analytics.flushInterval > 0, 'config.analytics.flushInterval is invalid'); |
| 错误 | config.analytics.flushInterval 不是数字 | assert | assert(typeof config.analytics.flushInterval === 'number', 'config.analytics.flushInterval is not a number'); |
| 错误 | config.analytics.proxy 不是“虚拟” | assert | assert(config.analytics.proxy === 'dummy', 'config.analytics.proxy is not "dummy"'); |
| 错误 | 未定义 config.analytics.proxy | assert | assert(config.analytics.proxy, 'config.analytics.proxy is not defined'); |
| 错误 | config.analytics.proxy_revision 不是数字 | assert | assert(typeof config.analytics.proxy_revision === 'number', 'config.analytics.proxy_revision is not a number'); |
| 错误 | 未定义 config.analytics.proxy_revision | assert | assert(config.analytics.proxy_revision, 'config.analytics.proxy_revision is not defined'); |
| 错误 | config.analytics.source 不是“microgateway” | assert | assert(config.analytics.source === 'microgateway', 'config.analytics.source is not "microgateway"'); |
| 错误 | config.analytics.source 未定义 | assert | assert(config.analytics.source, 'config.analytics.source is not defined'); |
| 错误 | config.analytics.uri 不是字符串 | assert | assert(typeof config.analytics.uri === 'string', 'config.analytics.uri is not a string'); |
| 错误 | config.analytics.uri 未定义 | assert | assert(config.analytics.uri, 'config.analytics.uri is not defined'); |
| 错误 | 未定义 config.apikeys.public_key | assert | assert(typeof config.apikeys.public_key === 'string', 'config.apikeys.public_key is not defined'); |
| 错误 | 未定义 config.edge_config | assert | assert(config.edge_config, 'config.edge_config is not defined'); |
| 错误 | 未定义 config.edge_config.bootstrap | assert | assert(config.edge_config.bootstrap, 'config.edge_config.bootstrap is not defined'); |
| 错误 | config.edge_config.jwt_public_key 未定义 | assert | assert(config.edge_config.jwt_public_key, 'config.edge_config.jwt_public_key is not defined'); |
| 错误 | 如果定义了 config.edge_config.proxy_tunnel,则必须定义 config.edge_config.proxy | assert | assert(typeof config.edge_config.proxy !== 'undefined', 'config.edge_config.proxy must be defined if config.edge_config.proxy_tunnel is defined'); |
| 错误 | config.edge_config.proxy_tunnel 不是布尔值 | assert | assert(typeof config.edge_config.proxy_tunnel === 'boolean', 'config.edge_config.proxy_tunnel is not a boolean'); |
| 错误 | config.edge_config.refresh_interval 不是数字 | assert | assert(typeof config.edge_config.refresh_interval === 'number', 'config.edge_config.refresh_interval is not a number'); |
| 错误 | config.edge_config.refresh_interval 过小(最小值为 1 小时) | assert | assert(config.edge_config.refresh_interval >= 3600000, 'config.edge_config.refresh_interval is too small (min 1h)'); |
| 错误 | config.edge_config.retry_interval 不是数字 | assert | assert(typeof config.edge_config.retry_interval === 'number', 'config.edge_config.retry_interval is not a number'); |
| 错误 | config.edge_config.retry_interval 过小(最小值为 5 秒) | assert | assert(config.edge_config.retry_interval >= 5000, 'config.edge_config.retry_interval is too small (min 5s)'); |
| 错误 | config.edgemicro 未定义 | assert | assert(config.edgemicro, 'config.edgemicro is not defined'); |
| 错误 | config.edgemicro.logging 未定义 | assert | assert(config.edgemicro.logging, 'config.edgemicro.logging is not defined'); |
| 错误 | 未定义 config.edgemicro.logging.dir | assert | if (!config.edgemicro.logging.to_console) assert(config.edgemicro.logging.dir, 'config.edgemicro.logging.dir is not defined'); |
| 错误 | 未定义 config.edgemicro.logging.level | assert | assert(config.edgemicro.logging.level, 'config.edgemicro.logging.level is not defined'); |
| 错误 | config.edgemicro.max_connections 不是数字 | assert | assert(typeof config.edgemicro.max_connections === 'number', 'config.edgemicro.max_connections is not a number'); |
| 错误 | 未定义 config.edgemicro.max_connections | assert | assert(config.edgemicro.max_connections, 'config.edgemicro.max_connections is not defined'); |
| 错误 | config.edgemicro.plugins.sequence 不是数组 | assert | assert(Array.isArray(config.edgemicro.plugins.sequence), 'config.edgemicro.plugins.sequence is not an array'); |
| 错误 | config.edgemicro.port 未定义 | assert | assert(config.edgemicro.port, 'config.edgemicro.port is not defined'); |
| 错误 | config.oauth.allowInvalidAuthorization 未定义 | assert | assert(typeof config.oauth.allowInvalidAuthorization === 'boolean', 'config.oauth.allowInvalidAuthorization is not defined'); |
| 错误 | config.oauth.allowNoAuthorization 未定义 | assert | assert(typeof config.oauth.allowNoAuthorization === 'boolean', 'config.oauth.allowNoAuthorization is not defined'); |
| 错误 | 未定义 config.oauth.public_key | assert | assert(typeof config.oauth.public_key === 'string', 'config.oauth.public_key is not defined'); |
| 错误 | 未定义 config.oauthv2.public_key | assert | assert(typeof config.oauthv2.public_key === 'string', 'config.oauthv2.public_key is not defined'); |
| 错误 | config.proxies 未定义 | assert | assert(config.proxies, 'config.proxies is not defined'); |
| 错误 | 未定义 config.proxy[ + index + ].base_path | assert | assert(proxy.base_path, 'config.proxy[' + index + '].base_path is not defined'); |
| 错误 | config.proxy[ + index + ].max_connections 不是数字 | assert | assert(typeof proxy.max_connections === 'number', 'config.proxy[' + index + '].max_connections is not a number'); |
| 错误 | 未定义 config.proxy[ + index + ].max_connections | assert | assert(proxy.max_connections, 'config.proxy[' + index + '].max_connections is not defined'); |
| 错误 | 未定义 config.proxy[ + index + ].name | assert | assert(proxy.name, 'config.proxy[' + index + '].name is not defined'); |
| 错误 | 未定义 config.proxy[ + index + ].proxy_name | assert | assert(proxy.target_name, 'config.proxy[' + index + '].proxy_name is not defined'); |
| 错误 | 未定义 config.proxy[ + index + ].revision | assert | assert(proxy.revision, 'config.proxy[' + index + '].revision is not defined'); |
| 错误 | 未定义 config.proxy[ + index + ].url | assert | assert(proxy.url, 'config.proxy[' + index + '].url is not defined'); |
| 错误 | config.quota.allow 不是数字 | assert | assert(typeof config.quota.allow === 'number', 'config.quota.allow is not a number'); |
| 错误 | 未定义 config.quota.allow | assert | assert(config.quota.allow, 'config.quota.allow is not defined'); |
| 错误 | config.quota.interval 不是数字 | assert | assert(typeof config.quota.interval === 'number', 'config.quota.interval is not a number'); |
| 错误 | 未定义 config.quota.interval | assert | assert(config.quota.interval, 'config.quota.interval is not defined'); |
| 错误 | 未定义 config.spikearrest | assert | assert(config.spikearrest, 'config.spikearrest is not defined'); |
| 错误 | config.spikearrest.allow 无效 | assert | assert(+config.spikearrest.allow > 0, 'config.spikearrest.allow is invalid'); |
| 错误 | config.spikearrest.allow 不是数字 | assert | assert(typeof config.spikearrest.allow === 'number', 'config.spikearrest.allow is not a number'); |
| 错误 | 未定义 config.spikearrest.allow | assert | assert(config.spikearrest.allow, 'config.spikearrest.allow is not defined'); |
| 错误 | config.spikearrest.bufferSize 无效 | assert | assert(+config.spikearrest.bufferSize > 0, 'config.spikearrest.bufferSize is invalid'); |
| 错误 | config.spikearrest.bufferSize 不是数字 | assert | assert(typeof config.spikearrest.bufferSize === 'number', 'config.spikearrest.bufferSize is not a number'); |
| 错误 | config.spikearrest.timeUnit 未定义 | assert | assert(config.spikearrest.timeUnit, 'config.spikearrest.timeUnit is not defined'); |
| 错误 | 严重错误:解析下载的商品列表时出错 | 回调 | |
| 错误 | 严重错误:解析下载的代理列表时出错 | 回调 | |
| 错误 | 检测到产品配置错误 | console.error | 然后是 console.warn('using old cached configuration'); |
| 错误 | 从以下位置读取配置时出错: | 抛出 | 配置 yaml 文件 |
| 错误 | 保存配置到以下位置时出错: | 回调 | 配置 yaml 文件 |
| 错误 | 致命错误:缓存的配置不可用,无法继续 | 回调 | |
| 错误 | interval_message | assert | assert(+config.quota.interval > 0, interval_message); |
| 错误 | config.edge_config.proxy 的协议无效(预期为 http: 或 https:: + proxy_url.protocol) | assert | assert(proxy_url.protocol === 'http:' || proxy_url.protocol === 'https:', 'invalid protocol for config.edge_config.proxy (expected http: or https:): ' + proxy_url.protocol); |
| 错误 | 配置的代理主机无效。edge_config.proxy | assert | assert(proxy_url.hostname, 'invalid proxy host for config.edge_config.proxy: ' + proxy_url.hostname); |
| 错误 | Edge Micro 似乎尚未配置,请参阅管理员指南 | 回调 | 结果:未能加载配置 |
| 错误 | 缺少密钥 | assert | assert(keys.key, 'key is missing'); |
| 错误 | 必须具有 configDir | assert | assert(configDir, 'must have configDir') |
| 错误 | 必须具备的选项 | assert | assert(options, 'must have options'); |
| 错误 | 必须具有来源 | assert | assert(source, 'must have source') |
| 错误 | 必须有要加载的来源 | assert | assert(options.source, 'must have source to load from') |
| 错误 | 必须具有 targetFile | assert | assert(fileName, 'must have targetFile') |
| 错误 | 选项不得为 null | assert | assert(options, 'options cannot be null'); |
| 错误 | options.keys 不能为 null | assert | assert(options.keys, 'options.keys cannot be null'); |
| 错误 | port_message | assert | assert(+config.edgemicro.port < 65536, port_message); |
| 错误 | 商品应为数组 | assert | assert(Array.isArray(products), 'products should be an array'); |
| 错误 | “商品‘”+ 商品 +“’的代理应为数组” | assert | assert(Array.isArray(product.proxies), 'proxies for product ' + product + ' should be an array'); |
| 错误 | 缺少 secret | assert | assert(keys.secret, 'secret is missing'); |
| 错误 | 未设置目标 | assert | assert(target, 'target is not set'); |
| 警告 | 下载配置时出错,请检查引导配置 | console.warn | |
| 警告 | 未能下载 jwt_public_key | console.warn | |
| 警告 | 未启用 JWK 密钥 | console.warn | |
| 警告 | message, 'download from', url, 'returned' | console.warn | 搜索:(.*)\sdownload from\s(.*)\sreturned |
| 警告 | 在响应中未找到任何边缘微产品 | console.warn | |
| 警告 | 组织中未找到任何边缘微代理 | console.warn | |
| 警告 | 响应中未找到任何边缘微代理 | console.warn | |
| 警告 | 组织中未找到任何商品 | console.warn | |
| 警告 | 回答中未找到任何商品 | console.warn | |
| 警告 | 使用旧的缓存配置 | console.warn | |
microgateway-plugins 模块 |
|||
| 错误 | 配置不存在 | 抛出 | 与 YAML 文件相关 |
| 错误 | apikey | HTTP 响应 | apiky 插件中的故障 |
| 错误 | bauth | HTTP 响应 | bauth 插件中的失败 |
| 错误 | extauth | HTTP 响应 | extauth 插件中的故障 |
| 错误 | Oauth | HTTP 响应 | oauth 插件中的故障 |
| 警告 | 处理 Apigee Analytics 时出错。允许继续处理请求 | logger.error | |
| 警告 | 忽略错误 | console.warn | apikeys、oauth 和 oauthv2 插件 |
| 警告 | 解析 JWT 时出错: | console.warn | |
| 警告 | oath 响应对象缺少 setHeader | console.warn | oauth 参数错误表示某些错误不会报告。 |
| 警告 | 运行时未提供 oath 响应对象 | console.warn | oauth 参数错误 |
| 警告 | 运行时未提供 oath 统计信息对象 | console.warn | oauth 参数错误 |
apigeetool-node 模块 |
|||
| 错误 | 删除缓存失败,状态代码为 %d', res.statusCode | callback | 在 deletecache.js 中抛出。来自 Apigee Edge 的状态代码。 向回调传递包含以下消息的堆栈轨迹错误:done(new Error(errMsg)); |
| 错误 | 删除商品失败,状态代码为 %d',res.statusCode | callback | 在 deleteproduct.js 中抛出。来自 Apigee Edge 的状态代码。 向回调传递包含以下消息的堆栈轨迹错误:done(new Error(errMsg)); |
| 错误 | 必须指定组织、API 和修订版本! | callback | 在 fetchproxy.js 中抛出。配置错误。 |
| 错误 | 提取代理时收到错误 %d:%j | callback | 在 fetchproxy.js 中抛出。200 以外的状态代码。 |
| 错误 | 创建应用失败,状态代码为 %d | callback | 在 createapp.js 中抛出。将所有错误作为堆栈轨迹错误传递回回调。 不进行任何控制台打印或日志条目记录。 |
| 错误 | 命令“+”失败,状态代码为 %d | callback | 在 command-utils.js 中抛出。对于解析并传递给此模块的任何命令,如果代码不是 200 或 201,则会生成错误消息。设置此消息的格式,但不打印。将包含消息的堆栈轨迹错误传递回回调。 |
| 错误 | 提取共享流时收到错误 %d:%s | callback | 在 fetchsharedflow.js 中抛出。对于任何非 200 的 HTTP 状态。如果成功,但无法写入文件,则会写入控制台: Failed to write file Error text: [stack_trace_error] |
| 错误 | 创建 KeySecret 失败,状态代码为 %d', res.statusCode | callback | 在 createappkey.js 中抛出。对于来自 Apigee Edge 的非 200 或 201 HTTP 状态代码。 |
| 错误 | 创建缓存失败,状态代码为 %d', res.statusCode | callback | 在 createcache.js 中抛出。对于来自 Apigee Edge 的非 200 或 201 的 HTTP 状态代码。 |
| 错误 | 创建商品失败,状态代码为 %d',res.statusCode | callback | 在 createproduct.js 中抛出。对于来自 Apigee Edge 的非 201 HTTP 状态代码。 如果 HTTP 状态为 201,但响应包含错误 JSON,则错误 JSON 会转发到回调。 |
| 错误 | 删除应用失败,状态代码为 %d', res.statusCode | callback | 在 deleteapp.js 中抛出。对于来自 Apigee Edge 的非 200 HTTP 状态代码。 如果 HTTP 状态为 200,但响应包含错误 JSON,则错误 JSON 会转发到回调。 |
| 错误 | 创建开发者失败,状态代码为 %d', res.statusCode | callback | 在 createdeveloper.js 中抛出。对于来自 Apigee Edge 的非 201 HTTP 状态代码。 如果 HTTP 状态为 201,但响应包含错误 JSON,则错误 JSON 会转发到回调。 |
| 错误 | 删除开发者失败,状态代码为 %d',res.statusCode | callback | 在 deletedeveloper.js 中抛出。对于来自 Apigee Edge 的非 200 HTTP 状态代码。 如果 HTTP 状态为 200,但响应包含错误 JSON,则错误 JSON 会转发到回调。 |
插件错误
accesscontrol plug-in
This section describes the error codes and messages that are returned by the
accesscontrol plug-in with descriptions of possible causes.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| Not printed | Forbidden | 403 | Access control rule |
accumulate-request plug-in
This section describes the error codes and messages that are returned by the
accumulate-request plug-in with descriptions of possible causes.
No errors generated.
accumulate-resopnse plug-in
This section describes the error codes and messages that are returned by the
accumulate-response plug-in with descriptions of possible causes.
No errors generated.
analytics plug-in
This section describes the error codes and messages that are returned by the
analytics plug-in with descriptions of possible causes.
Errors encountered processing Apigee analytics are written to the Edge Microgateway log. Edge Microgateway processing continues.
apikeys plug-in
This section describes the error codes and messages that are returned by the
apikeys plug-in with descriptions of possible causes.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| invalid_request | Invalid Request | 400 | allowNoAuthorization == false
No Authorization header in the HTTP request allowOAuthOnly == true |
| invalid_request | API Key Verification URL not configured | 400 | Verification API service not in header. |
| access_denied | Copy service message | 403 | In response to the auth service timeout |
| missing_authorization | Missing API Key header | 401 | allowAPIKeyOnly == true
Unless allowInvalidAuthorization |
| invalid_authorization | Invalid Authorization header | 401 | allowOAuthOnly == true
Authorization-header not in HTTP |
| gateway_timeout | Copy service message | 504 | In response to the auth timeout |
| default | 500 | All other not categorized |
bauth plug-in
This section describes the error codes and messages that are returned by the
bauth plug-in with descriptions of possible causes.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| missing_authorization | Missing API Key header | 401 | allowAPIKeyOnly == true
Unless allowInvalidAuthorization |
| invalid_authorization | Invalid Authorization header | 401 | allowOAuthOnly == true
Authorization-header not in HTTP |
| gateway_timeout | Copy service message | 504 | In response to the auth timeout |
| default | 500 | All other not categorized |
cloud-foundry-route-service plug-in
This section describes the error codes and messages that are returned by the
cloud-foundry-route-service plug-in with descriptions of possible causes.
No errors generated.
cors plug-in
This section describes the error codes and messages that are returned by the
cors plug-in with descriptions of possible causes.
No errors generated.
eurekaclient plug-in
This section describes the error codes and messages that are returned by the
eurekaclient plug-in with descriptions of possible causes.
The eurekaclient plug-in throws a few console errors only, including a stack trace error on failed start and a warning about the target endpoint from Eureka not found.
extauth plug-in
This section describes the error codes and messages that are returned by the
extauth plug-in with descriptions of possible causes.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| invalid_request | Invalid Request | 400 | allowNoAuthorization == false
No Authorization header in the HTTP request allowOAuthOnly == true |
| invalid_request | API Key Verification URL not configured | 400 | Verification API service not in header. |
| access_denied | Copy service message | 403 | In response to the auth service timeout |
| missing_authorization | Missing API Key header | 401 | allowAPIKeyOnly == true
Unless allowInvalidAuthorization |
| invalid_authorization | Invalid Authorization header | 401 | allowOAuthOnly == true
Authorization-header not in HTTP |
| gateway_timeout | Copy service message | 504 | In response to the auth timeout |
| default | 500 | All other not categorized |
header-uppercase plug-in
This section describes the error codes and messages that are returned by the
header-uppercase plug-in with descriptions of possible causes.
No errors generated.
healthcheck plug-in
This section describes the error codes and messages that are returned by the
healthcheck plug-in with descriptions of possible causes.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| 503 | Too busy. No messages in HTTP or console | ||
| default | Application is not running on specified application port | 500 | All other not categorized |
invalidHeader plug-in
This section describes the error codes and messages that are returned by the
invalidHeader plug-in with descriptions of possible causes.
No errors generated.
json2xml plug-in
This section describes the error codes and messages that are returned by the
json2xml plug-in with descriptions of possible causes.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| default | 500 | All other not categorized |
monitor plug-in
This section describes the error codes and messages that are returned by the
monitor plug-in with descriptions of possible causes.
No errors generated.
oauth plug-in (v1)
This section describes the error codes and messages that are returned by the
oauth plug-in (v1) with descriptions of possible causes.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| invalid_request | Invalid Authorization Header | 400 |
|
| invalid_request | API Key Verification URL not configured | 400 | Verification API service not in header. |
| Access_denied | Copy service message | 403 | In response to the auth service timeout |
| invalid_token | Missing API Key header | 401 | allowAPIKeyOnly == true
Unless allowInvalidAuthorization is set |
| invalid_token | token could not be parsed | 401 | allowAPIKeyOnly == true
Bad token delivered |
| missing_authorization | Missing Authorization header | 401 | allowNoAuthorization == false
Authorization-header in HTTP allowOAuthOnly == true |
| invalid_authorization | Invalid Authorization header | 401 | allowOAuthOnly == true
Authorization-header not in HTTP |
| gateway_timeout | Copy service message | 504 | In response to the auth timeout |
| default | 500 | All other uncategorized responses |
oauthv2 plug-in
This section describes the error codes and messages that are returned by the
oauthv2 plug-in with descriptions of possible causes.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| invalid_request | Invalid Authorization Header | 400 |
|
| invalid_request | API Key Verification URL not configured | 400 | Verification API service not in header |
| access_denied | Copy service message | 403 | In response to the auth service timeout |
| invalid_token | Missing API Key header | 401 | allowAPIKeyOnly == true
Unless allowInvalidAuthorization is set |
| invalid_token | token could not be parsed | 401 | allowAPIKeyOnly == true
Bad token delivered |
| missing_authorization | Missing Authorization header | 401 | allowNoAuthorization == false
Authorization-header in HTTP allowOAuthOnly == true |
| invalid_authorization | Invalid Authorization header | 401 | allowOAuthOnly == true
Authorization-header not in HTTP |
| gateway_timeout | Copy service message | 504 | In response to the auth timeout |
| default | 500 | All other uncategorized responses |
quota plug-in
This section describes the error codes and messages that are returned by the
quota plug-in with descriptions of possible causes.
Defers to volos quota/apigee.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| invalid_authorization | Invalid Authorization header | 401 | allowOAuthOnly == true
Authorization-header not in HTTP |
| gateway_timeout | Not authorized to call the remote proxy. Check the "key" parameter. | 404 | In response to the auth timeout |
| default | 500 | All other not categorized | |
| throw | uri parameter must be specified | apigeequota.js | |
| throw | key parameter must be specified | apigeequota.js | |
| callback | Apigee Remote Proxy not found at: ' + self.uri + '. Check your configuration | apigeequota.js | |
| callback | HTTP error getting proxy version: %d. Check the "uri" parameter. | apigeequota.js | |
| callback | Quotas with a fixed starting time are not supported | apigeequota.js | |
| callback | Error updating remote quota: %d %s', resp.statusCode, body | apigeequota.js |
If there is an error on an entry in the product list, the product list will stop being processed.
quota-memory plug-in
This section describes the error codes and messages that are returned by the
quota-memory plug-in with descriptions of possible causes.
Defers to volos quota/apigee.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| invalid_authorization | Invalid Authorization header | 401 | allowOAuthOnly == true
Authorization-header not in HTTP |
| gateway_timeout | Not authorized to call the remote proxy. Check the "key" parameter. | 404 | In response to the auth timeout |
| default | 500 | All other not categorized | |
| throw | start time not allowed for month time units | quota.js. volos error on time format. | |
| throw | Invalid start time %s | quota.js. volos error on time format. | |
| throw | Invalid timeUnit %s | quota.js. volos error on time format. |
If there is an error on an entry in the product list, the product list will stop being processed.
spikearrest plug-in
This section describes the error codes and messages that are returned by the
spikearrest plug-in with descriptions of possible causes.
Defers to volos spikearrest/memory.
| Error | Message | HTTP status | Possible Causes |
|---|---|---|---|
| SpikeArrest engaged | 503 | Traffic spike. This is expected behavior. | |
| throw | Invalid timeUnit %s | spikearrest.js | |
| callback | key must be a string | spikearrest.js | |
| throw | %s must be a number', name | spikearrest.js |
transform-uppercase plug-in
This section describes the error codes and messages that are returned by the
transform-uppercase plug-in with descriptions of possible causes.
No errors generated.