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

Next.js自定义服务器如何将console.log输出到运行终端

问题原因

你直接执行next dev或next start时,启动的是Next.js内置的默认服务,完全不会加载你编写的这份Express自定义服务代码,不仅你写的console.log不会输出,你配置的helmet、接口代理等中间件也全部不会生效。
另外你代码里把Next实例的dev参数硬编码为false,开发环境下会丢失热更新、错误提示等开发能力。

解决步骤

1. 修正自定义服务代码

首先把硬编码的dev参数改成根据运行环境自动判断,修改对应代码段:

// 替换原来的 const app = next({ dev: false });
const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = app.getRequestHandler();

假设你把这份自定义服务代码保存为项目根目录下的server.js。

2. 修改启动脚本

替换package.json里的原有scripts配置,不要直接用Next默认的启动命令,改为直接运行你的自定义服务文件:

{
  "scripts": {
    "dev": "NODE_ENV=development node server.js",
    "build": "next build",
    "start": "NODE_ENV=production node server.js"
  }
}
  • 如果你是Windows系统,为了跨平台兼容环境变量设置,可以先安装cross-env依赖,把脚本里的环境变量设置部分改为cross-env NODE_ENV=xxx即可。
  • 如果需要开发环境下修改server.js自动重启服务,可以安装nodemon作为开发依赖,把dev脚本改为nodemon server.js。

3. 注意端口权限

你的代码里服务监听的是80端口,在Linux、macOS系统下,1024以下的端口需要管理员权限才能启动,执行启动命令时需要加sudo,否则会报权限错误。如果不需要强制用80端口,建议改成3000等大于1024的端口避免权限问题。

验证效果

配置完成后:

  • 开发环境执行npm run dev/yarn dev,启动后终端就会打印你写的> Ready on port 80日志,后续你在自定义服务里加的所有服务端console.log都会正常输出到当前终端。
  • 生产环境先执行npm run build/yarn build完成打包,再执行npm run start/yarn start,日志同样会正常输出到启动服务的终端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:45:33