资讯详情

资讯详情

Teable 开发模式修改后端代码不生效、3000 端口被占用怎么排查?

Teable 开发模式修改后端代码不生效、3000 端口被占用怎么排查【免费下载链接】teable✨ AI Spreadsheet for Business项目地址: https://gitcode.com/GitHub_Trending/te/teable在 Teable 仓库里以开发模式跑起来之后apps/nestjs-backend下执行pnpm dev有两个容易同时出现的现象改完后端代码刷新页面却不生效以及 3000 端口被残留进程占用导致重启失败。Teable 的 CONTRIBUTING.md 在 Known Issues 一节把这两个现象归为同一类问题开发模式下的热重载重启引发的端口冲突并给出了用lsof -i:3000定位、kill -9清理、再pnpm dev重启的处理路径。这篇文章按文档给出的流程走一遍先交代开发模式的端口分配再给出完整的检查与恢复步骤。适用环境Linux/MacWindows 需使用 WSL2PostgreSQL 开发库依赖 Docker。为什么会出现这两个现象开发模式的端口分配先看 Teable 开发模式里各端口被谁占用这是理解问题前提配置来源是 apps/nextjs-app/.env.developmentPORT3000后端NestJSHTTP 服务端口SOCKET_PORT3001应用自身的 websocket 端口PUBLIC_ORIGINhttp://localhost:3000。按 CONTRIBUTING.md 的说明开发模式下 Next.js 会占用 3000 端口的 websocket 通道来触发热重载为了避免冲突应用的 websocket 挪到了 3001所以你会在.env.development.local里看到SOCKET_PORT3001。而生产环境默认用 3000 端口处理 websocket 请求。冲突的触发条件文档也写清楚了开发模式下代码改动会触发热重载如果改动影响到apps/nestjs-backend包括packages/core、packages/db-main-prismanodejs 进程可能重启重启过程中就可能留下端口冲突。表现就是后端代码改动看起来没有生效此时 3000 端口大概率还被旧进程占着。准备按文档方式启动开发环境如果还没跑起来按 CONTRIBUTING.md与 README.md 的 Development 一节一致初始化# 启用包管理器 corepack enable # 安装依赖 pnpm installTeable 开发使用 PostgreSQL且要求已安装 Docker。初始化数据库用make switch-db-mode这一步会交互式询问选择哪种数据库1) postgres(pg)选择1即可它对应 Makefile 中的switch-db-mode目标会启动 postgres 容器、等待 healthy 后执行 prisma 的 generate 与 migrate deploy。可选的环境配置覆盖用于需要自定义变量时cd apps/nextjs-app cp .env.development .env.development.local最后启动开发服务cd apps/nestjs-backend pnpm dev这条命令会自动把后端和前端服务器一起启动并开启热重载。pnpm dev背后是 apps/nestjs-backend/package.json 里的nest start --webpackPath ./webpack.dev.js -w即 webpack watch 模式文件变化自动重载。修改后端代码不生效时检查 3000 端口按文档给出的排查顺序当后端代码改动看似没有生效时先确认端口是否被占用lsof -i:3000判断方式输出中出现监听 3000 端口的进程通常是上一个没退干净的 node 进程就说明是文档描述的端口冲突继续下一步清理如果没有任何进程占用 3000则不属于文档覆盖的这个已知问题需要另行排查文档未给出其他情形的处理。释放端口并重启开发服务清理命令会强制终止进程执行前确认[pid]就是上一步lsof -i:3000输出中占用 3000 端口的进程 PID不要对无关进程执行kill -9 [pid] # [pid] 替换为 lsof 输出中的进程 PID然后回到后端目录重新启动cd apps/nestjs-backend pnpm dev文档给出的恢复路径到此结束旧进程被清理、开发服务以热重载重新跑起来后后续对apps/nestjs-backend的改动即可正常热更新。限制与注意事项SOCKET_PORT3001是开发模式的设计值不是配置错误不要把它改回 3000生产环境默认使用 3000 处理 websocket 请求两者行为不同。热重载端口冲突主要出现在改动影响apps/nestjs-backendpackages/core、packages/db-main-prisma的场景这是文档点名的触发范围。拉取最新代码后的常规维护文档建议在pnpm install之后再执行一次make switch-db-mode保持依赖与数据库 schema 同步如果你刚改过 schema还涉及make gen-prisma-schema、make db-migration等迁移流程超出本文排查范围详见 CONTRIBUTING.md 的 Database Migration Workflow 一节。【免费下载链接】teable✨ AI Spreadsheet for Business项目地址: https://gitcode.com/GitHub_Trending/te/teable创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →