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

Nuxt 3生产环境中nuxt-umami不发送网络请求(本地运行正常)

Nuxt 3生产环境中nuxt-umami不发送网络请求(本地运行正常)

我之前折腾nuxt-umami的时候也碰到过几乎一模一样的问题,本地跑起来毫无问题,一到生产环境就哑火,给你几个我亲测有效的排查和解决方向:

  • 检查host的末尾斜杠:你用的自定义域名https://analytics.company_name.net,试试在结尾加上一个斜杠变成https://analytics.company_name.net/。因为nuxt-umami默认会把/api/send拼在host后面,如果host没斜杠,就会拼成https://analytics.company_name.netapi/send,这显然是无效的端点,自然发不出请求。我之前就是漏了这个斜杠,折腾了好久才发现。

  • 显式指定customEndpoint:虽然nuxt-umami默认的API端点是/api/send,但有时候在生产环境的配置解析过程中,默认值可能没有被正确加载。你可以在配置里显式加上这个参数,确保路径拼接正确:

umami: {
  id: process.env.NUXT_PUBLIC_UMAMI_ID,
  host: process.env.NUXT_PUBLIC_UMAMI_HOST,
  customEndpoint: '/api/send'
}
  • 排查CORS配置:生产环境中你的前端域名和umami域名是跨域的,要确认umami服务器的CORS设置是否允许你的生产域名访问。比如在umami的部署配置里,有没有把你的生产应用域名(比如https://your-production-app.com)加入到允许的跨域列表中?如果CORS没配置对,浏览器会悄悄阻止请求,有时候表面上会显示端点配置错误的提示,容易混淆问题。你可以在浏览器Network面板里看看有没有OPTIONS请求失败的记录。

  • 验证环境变量的加载时机:虽然你说已经console过runtimeConfig确认变量正确,但要注意nuxt-umami模块初始化的时机是否和环境变量注入的时机匹配。试试调整配置方式,把umami的参数放到public runtimeConfig里,让模块自动读取:

runtimeConfig: {
  public: {
    umamiId: process.env.NUXT_PUBLIC_UMAMI_ID,
    umamiHost: process.env.NUXT_PUBLIC_UMAMI_HOST
  }
},
umami: {
  // 留空,模块会自动从runtimeConfig.public中读取对应参数
}

或者反过来,在模块配置里直接处理环境变量,确保生产环境编译时变量已经被正确注入:

umami: {
  id: process.env.NUXT_PUBLIC_UMAMI_ID,
  host: `${process.env.NUXT_PUBLIC_UMAMI_HOST}/`, // 这里直接拼接斜杠
}
  • 检查umami服务器的HTTPS可达性:直接在浏览器地址栏访问https://analytics.company_name.net/api/send,看看能不能正常返回(正常情况下会返回405 Method Not Allowed,因为这个接口只接受POST请求)。如果访问失败,说明你的umami服务器可能存在HTTPS证书问题(比如自签名证书未被信任)或者网络连通性问题,这也会导致前端发不出请求。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 09:45:29