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

Next.js 13生产构建后console.log无输出,是否遗漏配置?

问题

运行生产构建时,所有console.log(...)消息无法输出。使用npm run dev运行时日志正常显示,但执行npm run build后再运行npm start,日志消息就不再出现,不过报错信息仍能正常抛出。是否存在遗漏的新配置项?

示例代码(服务器组件):

import Image from 'next/image'
import styles from './page.module.css'

export default function Home() {
  console.log("Home page");
  return (
    <main className={styles.main}>
      <div className={styles.description}>
      ..
    </main>
  )
}

注:上述代码来自GitHub仓库的my-app1/app/page.tsx文件

解决方案

这是Next.js 13+ App Router的默认行为——生产环境下,服务器组件中的console.log会被自动移除,目的是优化构建产物体积、避免不必要的日志泄露。但报错信息(如console.error)会被保留,用于生产环境的问题排查。

如果需要在生产环境保留服务器组件的日志,可以通过以下两种方式处理:

  • 使用环境变量控制日志输出
    在next.config.js中添加配置,结合环境变量决定是否保留日志:

    module.exports = {
      env: {
        ENABLE_SERVER_LOGS: process.env.ENABLE_SERVER_LOGS || 'false',
      },
    }
    

    然后在服务器组件中判断环境变量:

    export default function Home() {
      if (process.env.ENABLE_SERVER_LOGS === 'true') {
        console.log("Home page");
      }
      // ... 组件内容
    }
    

    启动生产服务时传入变量:ENABLE_SERVER_LOGS=true npm start

  • 改用自定义日志函数
    创建一个自定义日志工具,根据环境判断是否输出:

    // utils/logger.ts
    export const serverLog = (...args: any[]) => {
      if (process.env.NODE_ENV !== 'production') {
        console.log(...args);
      }
      // 若需要生产环境输出,可移除上述判断,或结合环境变量控制
    }
    

    在服务器组件中使用:

    import { serverLog } from '@/utils/logger'
    
    export default function Home() {
      serverLog("Home page");
      // ... 组件内容
    }
    

需要注意:生产环境输出服务器日志时,要确保不会泄露敏感信息,同时考虑性能影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 01:00:16