Angular SSR应用运行时触发EADDRINUSE端口占用错误求助
Angular SSR开发环境EADDRINUSE端口占用问题(端口:::65336)
问题详情
- Angular SSR应用首次启动正常,执行
npm run dev:ssr代码编译成功,但修改代码触发热重载时,出现EADDRINUSE地址占用错误,涉及端口为:::65336 - 已尝试升级至最新Node.js LTS版本(20.18.0)、Angular CLI最新版本(18.2.5),问题仍未解决
- 当前环境版本:
@angular/cli: 18.2.5,node: 20.18.0
临时解决方案
通过安装portfinder工具自动探测可用端口,修改server.ts中的启动逻辑实现端口重试:
- 安装依赖
npm install portfinder --save-dev
- 修改
server.ts的run函数:
import portfinder from 'portfinder'; async function run(): Promise<void> { const app = await NestFactory.create(AppServerModule); const config = app.get(ConfigService); // 读取配置或设置默认端口 const basePort = config.get('PORT') || 4000; // 自动寻找可用端口 const targetPort = await portfinder.getPortPromise({ port: basePort, stopPort: basePort + 100 // 限定端口搜索范围 }); try { await app.listen(targetPort); console.log(`Server running on http://localhost:${targetPort}`); } catch (err) { console.error('Server startup failed:', err); process.exit(1); } } run();
修改后,每次热重载时会自动检测并使用未被占用的端口,避免端口冲突导致的启动失败。
内容的提问来源于stack exchange,提问作者R.Almofleh
相关产品推荐
相关产品推荐

