You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Angular项目修改Host URL后,服务器渲染模式下如何实现局域网访问?

解决Angular SSR应用局域网访问问题

既然你的应用用了服务器渲染(SSR/Angular Universal),确实没法直接用ng serve --host 0.0.0.0,不过可以通过以下几个简单步骤实现局域网设备访问:

1. 修改Server.ts的监听地址

打开项目根目录下的server.ts文件,找到启动服务器的代码段(通常是app.listen那一行),把监听的主机地址从localhost改成0.0.0.0,这样服务器会监听所有可用的网络接口:

// 原来的代码可能是这样的
app.listen(process.env.PORT || 4000, 'localhost', () => {
  console.log(`Node Express server listening on http://localhost:${process.env.PORT || 4000}`);
});

// 修改后
app.listen(process.env.PORT || 4000, '0.0.0.0', () => {
  console.log(`Node Express server listening on http://0.0.0.0:${process.env.PORT || 4000}`);
});

2. 构建并启动SSR应用

根据你的环境选择对应的启动方式:

  • 开发模式:运行以下命令启动SSR开发服务器

    ng run [你的项目名称]:serve-ssr
    

    替换[你的项目名称]为实际项目名,比如ng run my-app:serve-ssr

  • 生产模式:先构建前端和服务端代码,再启动服务器

    # 构建前端资源
    ng build --configuration production
    # 构建服务端代码
    ng run [你的项目名称]:server --configuration production
    # 启动服务器
    node dist/[你的项目名称]/server/main.js
    

3. 确认主机的局域网IP

在你的开发主机上,查询自己的局域网IP地址:

  • Windows:打开命令提示符,运行ipconfig,找到「以太网适配器 本地连接」或「WLAN」下的IPv4地址
  • Mac/Linux:打开终端,运行ifconfigip addr,找到对应网络接口的inet地址(通常是192.168.x.x或10.x.x.x格式)

4. 配置API和Host URL

确保你的应用中配置的API地址和Host URL能被局域网设备访问:

  • 如果API是部署在同一主机上,把环境文件(environment.ts/environment.prod.ts)中的API地址改成主机的局域网IP + 端口,比如http://192.168.1.100:3000/api
  • 避免使用https://foo.com:4000这种只有本地能解析的域名,换成局域网IP或者让API使用相对路径(如果API和SSR服务器同端口的话)

5. 开放防火墙端口

确保开发主机的防火墙允许4000端口的入站请求,否则局域网内的其他设备会无法连接。

完成以上步骤后,局域网内的其他设备就可以通过「你的主机局域网IP:4000」来访问你的SSR应用了,比如http://192.168.1.100:4000

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

火山引擎 最新活动