Comment tester une application créée à partir D'un autre périphérique?
j'ai une application générée avec CLI angulaire à partir de zéro. CLI version angular-cli: 1.0.0-beta.11-webpack.2
je suis en train de le tester à partir de mon smartphone, mais je reçois Connexion refusée.
Donc, je run ng serve
sur mon portable et essayez d'accéder à l'application:
- De l'ordinateur portable, à l'aide de
localhost
: Travaux - De l'ordinateur portable, à l'aide de la propriété intellectuelle: Connexion refusée
- à Partir de smartphone, à l'aide de la propriété intellectuelle: Connexion refusé
cela fonctionnait avec la version précédente, SystemJS de CLI. J'ai vérifié que je n'avais pas de pare-feu.
Comment puis-je corriger ou corriger cette erreur?
j'utilise un Mac.
5 réponses
L'ajout du drapeau host avec la valeur "0.0.0.0" devrait vous permettre d'accéder au serveur web à partir de n'importe quel périphérique 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 le paquet.json
"start": "ng serve --host 0.0.0.0 --port 4200 --disable-host-check ",
cependant --disable-host-check
serait un risque de sécurité
et vous aurez besoin de
"@angular/cli": "^1.1.0-rc.2"
que ce drapeau est apparu dans la version 1.1
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 cela peut être helpfull (une version un peu automatisée de la réponse de @Captain Whippet):
dev-serveur.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"
}
puis "npm démarrer"
vous pouvez alors ouvrir votre application sur n'importe quel périphérique de votre réseau local via une adresse imprimée en jaune.
@angulaire/cli: 1.3.2, nœud: 6.9.5
testé sur Mac et Windows
vous devez trouver dans le dossier node_modules angular cli toutes les occurences de localhost et remplacer (une en particulier, selon votre version angular-cli) par 0.0.0.0.
puis dans le paquet.json mettre ng servir --host 0.0.0.0
Dans mon cas, le fichier de commandes/service.js