ローカルネットワークのデバイスからwebpack-dev-serverにアクセスする方法


112

いくつかのwebpack開発サーバーの構成があります(構成全体の一部です)。

config.devServer = {
  contentBase: './' + (options.publicFolder ? options.publicFolder : 'public'),
  stats: {
    modules: false,
    cached: false,
    colors: true,
    chunk: false
  },
  proxy: [{
    path: /^\/api\/(.*)/,
    target: options.proxyApiTarget,
    rewrite: rewriteUrl('/$1'),
    changeOrigin: true
  }]
};

function rewriteUrl(replacePath) {
  return function (req, opt) {  // gets called with request and proxy object
    var queryIndex = req.url.indexOf('?');
    var query = queryIndex >= 0 ? req.url.substr(queryIndex) : "";
    req.url = req.path.replace(opt.path, replacePath) + query;
    console.log("rewriting ", req.originalUrl, req.url);
  };
}

次のコマンドでwebpackを実行します。

node node_modules/webpack-dev-server/bin/webpack-dev-server.js --host 0.0.0.0 --history-api-fallback --debug --inline --progress --config config/webpack.app.dev.js

私はhttp://localhost:8080ローカルマシンでを使用して開発サーバーにアクセスできますが、モバイル、タブレット(同じWi-Fiネットワーク内にあります)からもサーバーにアクセスしたいと思っています。

どうすれば有効にできますか?ありがとう!


ホストが0.0.0.0に設定されていれば、すでに機能しているようです。
Felix Kling 2016

@FelixKlingが、iPhoneのSafariでどのIPアドレスを使用すればよいですか?
マルコアウリ2016

サーバーが実行されているマシンのIP。
Felix Kling 2016

2
github.com/webpack/webpack-dev-server/issues/882webpack-dev-server --host=0.0.0.0 --disable-host-check --useLocalIp
Nickofthyme

回答:


199

(Macと私のようなネットワークを使用している場合。)

webpack-dev-server withを実行します--host 0.0.0.0—これにより、サーバーはlocalhostだけでなく、ネットワークからのリクエストをリッスンできます。

ネットワーク上のコンピュータのアドレスを見つけます。ターミナルでifconfigen1セクションまたは次のようなものを入力して探しますinet 192.168.1.111

同じネットワーク上のモバイルデバイスで、http://192.168.1.111:8080ホットリロード開発至福にアクセスしてお楽しみください。


4
私にとっても機能していますが、空白のページが表示されます。タブを参照すると、スクロールしてサイトのタイトルを表示できます。これを修正する方法を知っていますか?
moesphemie 2017

2
Ubuntu 17.10でも動作します。ifconfigインストールされていない場合、IPアドレスはip addr show
TitanFighterの

1
開発サーバーを--host 0.0.0.0で実行するために、構成ファイルを更新する必要がありますか、それとも実行できますnpm run dev --host 0.0.0.0か?現在、何も変更せずにコマンドを実行すると、エラーがスローされるためです。設定ファイルを更新する必要がある場合、ファイル名/ディレクトリを教えていただけますか?
PrintlnParams 2018年

npm run dev --host 0.0.0.0は、プログラムがモジュール名として「0.0.0.0」を探していることを示すエラーをスローします。プロジェクトのindex.jsファイル内の値を「localhost」から「0.0.0.0」に変更すると、機能しました。
Vasily Hall

1
2018年12月にまだ働いています。参考までに、ターミナルでIPアドレスを探すのではなく、次のようにします。それは私がそれを試すたびにうまくいくようです。
2018

90

あなたはあなたのIPアドレスを直接webpack設定ファイルに設定することができます:

devServer: {
    host: '0.0.0.0',//your ip address
    port: 8080,
    disableHostCheck: true,
    ...
}

1
これは私にとってはうまくいきました、値は0.0.0.0でうまくいきました。
Vasily Hall

2
Windowsでは、wifiを使用して動作しました。ホストをipconfig > IPv4 Address
記述し

1
これは、断然、最高ですが、あえて答えます。なぜそのようにマークされていないのですか?
カマル

open: trueフラグも使用したい場合はopenPage: 'http://localhost:8080'、0.0.0.0:8080を自動的にロードしようとして失敗するのではなく、ブラウザを正しく設定して再起動することもできます。
マーク

それは機能しますが、誰かがあなたのデバイスに接続する可能性のある公共の場所での0.0.0.0のバインドに注意してください。データが盗まれる可能性があります。github.com/funbox/webpack-dev-server-firewall
Igor Adamenko

16

それは完璧な解決策ではないかもしれませんが、これにはngrokを使用できると思います。 NgrokローカルWebサーバー公開するのに役立ちますをインターネットに。ngrokをローカルの開発サーバーに向けて、ngrok URLを使用するようにアプリを構成できます。

たとえば、サーバーがポート8080で実行されているとします。ngrokを使用して、実行によってそれを外界に公開できます

./ngrok http 8080

ここでngrokの出力

良い点ngrokは、公開されたURLのより安全なhttpsバージョンを提供し、世界中の他の人にあなたの作品をテストまたは表示させることです。

また、公開されたURLにランダムな文字列の代わりにユーザーフレンドリーなホスト名を設定するなど、コマンドで利用できる多くのカスタマイズがあります。

ウェブサイトを開いてモバイルの応答性を確認するだけの場合は、browersyncを使用してください


8

私にとって、最終的に助けとなったのは、これをwebpack-dev-server構成に追加することでした:

new webpackDev(webpack(config), {
    public: require('os').hostname().toLowerCase() + ':3000'
    ...
})

次に、babelのwebpack.config.jsファイルも変更します。

module.exports = {
    entry: [
        'webpack-dev-server/client?http://' + require('os').hostname().toLowerCase() + ':3000',
        ...
    ]
    ...
}

hostnameOSXのターミナルで)コンピューターのホスト名を取得し、定義したポートを追加するだけで、モバイルに移行できます。

ngrok.ioと比較すると、このソリューションでは、モバイルでreactのホットリロードモジュールを使用することもできます。


7

forrestoの答えに追加情報を追加するためにコメントすることはできませんでしたが、ここ(2019年)には--public、セキュリティの脆弱性--host 0.0.0.0のみのため、フラグを追加する必要があります。このコメントをチェック詳細については、をください。

回答としての「他の回答への応答」を回避するために、ここではforrestoのアドバイスと、この作業を行うために必要な追加の詳細を示します。

両方を追加:

--host 0.0.0.0

そして

--public <your-host>:<port>

ここで、your-hostはホスト名(私にとっては(name)s-macbook-pro.local)です)およびportは、アクセスしようとしているポートです(ここでも、私にとっては8081です)。

だからここに私のpackage.jsonは次のようになります:

  "scripts": {
    ...
    "start:webpack": "node_modules/.bin/webpack-dev-server --host 0.0.0.0 --public <name>s-macbook-pro.local:8081",
    ...
  },

残念ながら、それは私にはうまくいきませんでした。私はWindows 10を使用していますが、携帯電話で開発用Webアプリケーションにアクセスできません。モバイルブラウザでタイムアウトエラーが発生するだけです。同じWindows 10ラップトップでWebアプリを起動し、tomcat経由でサービスを提供すると、WindowsラップトップのIPアドレスに続けてポート番号を入力することで、そのローカルWebアプリにアクセスできます。なぜそれが可能かは本当にわかりませんが、webpack devserverで実行されているローカルwebappを開くことができません。誰かが私の携帯電話に私のローカルwebappアクセスを作ろうとする他に何ができるかについて何か考えを持っていますか?
ampersand83
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.