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

Angular应用中Google reCaptcha V2无法显示问题求助

解决Angular中ngx-captcha V2无法渲染验证码容器的问题

以下是针对性的排查和解决步骤:

  • 检查模块导入配置
    确保在使用验证码的模块(AppModule或FeatureModule)中正确导入ReCaptchaV2Module,全局配置可通过forRoot传入Site Key:

    import { ReCaptchaV2Module } from 'ngx-captcha';
    
    @NgModule({
      imports: [
        // 其他必要模块
        ReCaptchaV2Module.forRoot({ siteKey: '你的Google reCaptcha V2 Site Key' })
      ]
    })
    export class YourModule { }
    

    若无需全局配置,可在组件模板的验证码标签上直接绑定siteKey属性。

  • 验证模板标签正确性
    使用V2对应的<re-captcha>标签,避免混淆V3的组件。同时确保父容器有足够宽度(reCaptcha V2要求至少300px):

    <div class="captcha-container">
      <re-captcha siteKey="你的密钥" (resolved)="onCaptchaResolved($event)"></re-captcha>
    </div>
    

    对应的样式:

    .captcha-container {
      width: 300px;
      min-width: 300px;
    }
    
  • 确认密钥有效性与域名权限

    • 确保使用的是reCaptcha V2的Site Key(而非V3密钥或后端用的Secret Key);
    • 登录Google reCaptcha控制台,检查该密钥的允许域名列表,需包含当前环境的域名(本地开发需添加localhost、127.0.0.1)。
  • 排查脚本加载与控制台错误

    • 打开浏览器开发者工具(F12)的Console标签,查看是否有相关错误:
      • Invalid site key:密钥错误或类型不匹配
      • Not a valid domain for the site key:域名未在控制台授权
      • 网络请求失败:检查网络是否能正常访问reCaptcha API
    • 若自动加载脚本失败,可尝试手动在index.html的<head>中添加:
      <script src="https://www.google.com/recaptcha/api.js" async defer></script>
      
      注意不要重复加载,若ngx-captcha已配置自动加载则跳过此步。
  • 检查条件渲染逻辑
    确认模板中没有*ngIf、[hidden]等指令导致验证码容器被隐藏,确保渲染条件处于激活状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:09:57