How to test an app created with Angular CLI ng serve from another device?

前端 未结 5 1997
轮回少年
轮回少年 2021-02-02 07:37

I have an app generated with Angular CLI from scratch. CLI version angular-cli: 1.0.0-beta.11-webpack.2

I am trying to test it from my smartphone but I get

5条回答
  •  不要未来只要你来
    2021-02-02 08:19

    Maybe this can be helpfull (a bit automated version of @Captain Whippet's answer):

    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"
      }
    

    then run "npm start"

    You can then open your app on any device on your local network via address printed in yellow.

    @angular/cli: 1.3.2, node: 6.9.5

    tested on Mac and Windows

提交回复
热议问题