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.

23
demandé sur Carlos Mermingas 2016-08-22 02:34:02

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

46
répondu grotz 2016-11-22 06:54:41

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

7
répondu bravik 2017-05-31 09:33:36

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

2
répondu Captain Whippet 2017-08-05 11:47:04

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

2
répondu RUKAclMortality 2017-08-30 07:43:46

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

-2
répondu Nather Webber 2016-12-30 13:18:06