求助:Ubuntu14.04虚拟机中ng2-admin编译成功后无法访问127.0.0.1:4200
解决ng2-admin编译成功但无法访问http://127.0.0.1:4200的问题
结合你在VirtualBox Kaa Sandbox Ubuntu 14.04上的环境,我来分享几个排查和解决的方向:
1. 先确认Dev Server的监听状态
编译成功不代表开发服务器真的在运行并监听端口,先做这两步:
- 回到运行
npm start的终端,仔细查看输出日志,找有没有类似**"Angular Live Development Server is listening on 127.0.0.1:4200, open your browser on http://127.0.0.1:4200/"**的提示,如果没有,说明服务器没正常启动,可能有隐性报错(比如依赖冲突),把日志里的错误信息贴出来能更快定位。 - 在虚拟机里执行命令检查端口占用:
如果没看到node进程监听4200端口,要么是服务器没启动,要么是端口被其他程序占用。可以换个端口试试:sudo netstat -tulpn | grep 4200
然后访问ng serve --port 4201http://127.0.0.1:4201。
2. 区分虚拟机内/宿主机访问场景
- 如果是在虚拟机内部的浏览器访问:
除了上面的端口检查,还可以试试用http://0.0.0.0:4200访问,有时候Dev Server会默认绑定localhost,0.0.0.0能覆盖所有本机IP。 - 如果是在宿主机浏览器访问:
VirtualBox的默认NAT模式下,虚拟机的127.0.0.1是内部回路,宿主机无法直接访问。需要做两件事:- 启动Dev Server时绑定所有IP:
ng serve --host 0.0.0.0 --port 4200 - 在VirtualBox设置里配置端口转发:找到你的虚拟机 → 设置 → 网络 → 高级 → 端口转发,添加一条规则:主机端口4200,子系统端口4200,协议TCP。然后宿主机访问
http://127.0.0.1:4200即可。
- 启动Dev Server时绑定所有IP:
3. 版本兼容性问题(重点)
你的nodejs 9.8.0和npm 5.6.0版本对于老版本的ng2-admin来说可能太新了,ng2-admin在维护初期推荐的node版本是8.x系列,高版本node可能会和旧依赖包产生兼容性冲突(比如某些gulp插件、webpack版本不兼容)。
解决方法:用nvm管理node版本,降级到稳定的8.x版本:
- 安装nvm:
重启终端让nvm生效。curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash - 安装并切换到node 8.17.0:
nvm install 8.17.0 nvm use 8.17.0 - 删除项目的
node_modules文件夹和package-lock.json:rm -rf node_modules package-lock.json - 重新安装依赖并启动:
npm install npm start
4. 其他小细节
- 清除浏览器缓存或者用隐身模式访问,有时候缓存会导致页面加载异常。
- 虽然你说ufw未激活,但可以再确认下:
确保输出是sudo ufw statusStatus: inactive。
内容的提问来源于stack exchange,提问作者Ameni Ben Yacoub
相关产品推荐
相关产品推荐

