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

如何通过New Relic浏览器监控上报Next.js服务器错误日志?脚本安装能否用noticeError?

New Relic脚本安装下的错误上报问题解答

核心结论

通过浏览器脚本安装的New Relic仅能在客户端环境使用newrelic.noticeError(err),服务器端无法通过这种方式上报错误。

问题原因拆解

  • 你当前代码的服务器端分支(typeof window == "undefined")里用require("newrelic"),但这个调用依赖New Relic的Node.js服务器端SDK,和你通过脚本安装的浏览器监控不是同一个东西。如果没在服务器端安装配置对应SDK,这段代码要么报错,要么完全不生效。
  • 浏览器脚本只会在客户端的window对象上挂载newrelic实例,服务器端没有这个全局对象,自然无法调用相关方法。

修正方案

  1. 服务器端错误上报配置
    要捕获上报服务器端错误,必须单独安装New Relic Node.js SDK:

    npm install newrelic
    

    然后在项目根目录创建newrelic.js配置文件,填入你的license key等服务器端配置信息。

  2. 修正Error组件代码
    确保服务器端SDK配置完成后,调整代码(注意删除多余的语法错误字符):

    Error.getInitialProps = ({ res, err }) => {
      console.log("statusCode err", res, err);
      if (typeof window == "undefined") {
        // 仅在服务器端SDK安装配置完成后,这段代码才有效
        const newrelic = require("newrelic");
        newrelic.noticeError(err);
      } else {
        // 客户端依赖脚本安装的New Relic,这段代码有效
        window.newrelic.noticeError(err);
      }
      const statusCode = res ? res.statusCode : err ? err.statusCode : 404;
      return { statusCode };
    };
    
    export default Error;
    
  3. 验证客户端上报
    客户端分支的window.newrelic.noticeError(err)是有效的,只要你正确在页面中加载了New Relic浏览器脚本,就能捕获上报客户端错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:10:49