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

Fresh(Deno) Web服务器修改端口后仍监听8000端口如何解决

Deno Fresh 配置3000端口仍监听8000问题排查方案

按以下优先级逐一排查即可解决:

  • 检查端口配置优先级覆盖问题
    Fresh读取端口配置的优先级从高到低为:命令行--port参数 > PORT环境变量 > 代码配置 > 默认8000端口。
    1. 先检查启动命令是否携带--port=8000参数,比如deno task start --port=8000、deno task dev --port=8000这类写法会直接覆盖代码里的端口配置,有则修改为3000或直接去掉该参数。
    2. 执行echo $PORT(Windows系统执行echo %PORT%)查看当前终端环境变量,如果返回值为8000,说明环境变量锁定了8000端口,执行unset PORT(Windows执行set PORT=)清除变量后重启,或直接把PORT变量设为3000即可。
  • 检查启动模式与配置文件匹配问题
    这是最高发的踩坑点:Fresh 1.x 版本的开发模式(执行deno task dev启动)默认不会读取main.tsx中start()方法传入的配置,只有生产构建后执行deno task start才会走你写的await start(manifest, { port: 3000 });这段逻辑。
    开发模式要改端口要么启动时追加--port=3000参数,要么在项目根目录的fresh.config.ts配置文件中统一声明端口,配置写法如下,对开发、生产模式同时生效,不会出现配置不一致的问题:
    import { defineConfig } from "$fresh/server.ts";
    
    export default defineConfig({
      server: {
        port: 3000
      }
    });
    
  • 检查代码修改有效性与残留进程问题
    1. 确认你修改的是当前运行项目根目录下的入口文件,不要改错其他分支、其他路径下的同名main.tsx文件;同时检查start()方法调用后有没有重复传入port配置覆盖前面的3000设置。
    2. 杀掉所有残留的Deno进程,避免修改代码前启动的旧服务还在后台占用8000端口造成错觉:Linux/macOS执行pkill deno,Windows在任务管理器中结束所有deno.exe进程后再重新启动服务。
  • 检查端口占用问题
    执行lsof -i:3000(Windows执行netstat -ano | findstr :3000)查看3000端口是否被其他程序占用,如果端口被占,部分旧版本Fresh会自动回退到默认8000端口启动,先释放3000端口再启动服务即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:45:40