J'ai une application générée avec Angular CLI à partir de zéro. CLI version angular-cli: 1.0.0-beta.11-webpack.2
J'essaie de le tester depuis mon smartphone mais j'obtiens Connexion refusée.
Donc, je lance ng serve
sur mon ordinateur portable et essayez d'accéder à l'application:
localhost
: WorksCela fonctionnait avec la précédente version SystemJS de CLI. J'ai vérifié que je n'ai pas de pare-feu en cours d'exécution.
Comment pourrais-je corriger ou déboguer cette erreur?
J'utilise un Mac.
L'ajout du drapeau d'hôte avec la valeur "0.0.0.0" devrait vous permettre d'accéder au serveur Web depuis n'importe quel appareil de votre réseau local.
Cela devrait fonctionner: ng serve --Host 0.0.0.0
Pour une explication: https://github.com/angular/angular-cli/pull/1475#issuecomment-235986121
Dans package.json
"start": "ng serve --Host 0.0.0.0 --port 4200 --disable-Host-check ",
Toutefois --disable-Host-check
serait un risque pour la sécurité et vous aurez besoin de "@angular/cli": "^1.1.0-rc.2"
comme ce drapeau est apparu dans la version 1.1
En suivant les conseils sur cette page: https://medium.com/webpack/webpack-dev-server-middleware-security-issues-1489d950874a , cela a fonctionné pour moi:
ng serve --Host 0.0.0.0 --Host my-computer
Peut-être que cela peut être utile (une version un peu automatisée de la réponse de @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"
}
Vous pouvez ensuite ouvrir votre application sur n'importe quel appareil de votre réseau local via une adresse imprimée en jaune.
@ angulaire/cli: 1.3.2, noeud: 6.9.5
testé sur Mac et Windows