我从头开始使用Angular CLI生成应用程序。 CLI版本angular-cli: 1.0.0-beta.11-webpack.2
我正试图通过我的智能手机测试它,但我得到拒绝连接。
因此,我在笔记本电脑上运行ng serve
并尝试访问该应用:
localhost
:工作这曾用于以前的SystemJS版CLI。我检查过我没有运行防火墙。
我该如何修复或调试此错误?
我正在使用Mac。
答案 0 :(得分:60)
使用值" 0.0.0.0"添加host-flag;应该允许您从本地网络上的任何设备访问网络服务器。
这应该有效:
ng serve --host 0.0.0.0
有关解释: https://github.com/angular/angular-cli/pull/1475#issuecomment-235986121
答案 1 :(得分:9)
在package.json
中 "start": "ng serve --host 0.0.0.0 --port 4200 --disable-host-check ",
但是--disable-host-check
会带来安全风险
而且你需要
"@angular/cli": "^1.1.0-rc.2"
因为此标志出现在1.1版本
答案 2 :(得分:2)
Following the advice on this page: https://medium.com/webpack/webpack-dev-server-middleware-security-issues-1489d950874a, this worked for me:
ng serve --host 0.0.0.0 --host my-computer
答案 3 :(得分:2)
也许这可能会有所帮助(@Captain Whippet的回答有点自动化版本):
DEV-server.js:
const os = require('os');
const { spawn } = require('child_process');
function getLocalIp(ipMatchArr) {
const networkInterfaces = os.networkInterfaces();
let matchingIps = Object.keys(networkInterfaces).reduce((arr, name) => {
const matchingInterface = networkInterfaces[name].find(iface =>
iface.family === 'IPv4' && ipMatchArr.find(match => iface.address.indexOf(match) > -1));
if (matchingInterface) arr.push(matchingInterface.address);
return arr;
}, []);
if (matchingIps.length) {
return matchingIps[0];
}
else {
throw(`Error. Unable to find ip to use as public host: ipMatches=['${ipMatchArr.join("', '")}']`);
}
}
function launchDevServer(address) {
const port = process.env.port || 4200;
const publicHostname = address + ":" + port;
console.log(`[[[ Access your NG LIVE DEV server on \x1b[33m ${publicHostname} \x1b[0m ]]]`);
spawn(
"ng serve"
, [
"--host 0.0.0.0"
, `--public ${publicHostname}`
]
, { stdio: 'inherit', shell: true }
);
}
/* execute */
launchDevServer(getLocalIp(['192.168.1.', '192.168.0.']));
的package.json:
"scripts": {
"start": "node dev-server.js"
}
然后,您可以通过黄色打印的地址在本地网络上的任何设备上打开您的应用。
@ angular / cli:1.3.2,node:6.9.5
在Mac和Windows上测试
答案 4 :(得分:-4)
你必须在node_modules angular cli文件夹中找到localhost的所有出现并替换(特别是一个,取决于你的angular-cli版本)0.0.0.0。
然后在package.json中输入ng serve --host 0.0.0.0
在我的情况下,文件是命令/ serve.js