Yerel ağdaki cihazlardan webpack-dev-server'a nasıl erişilir?


113

Bazı web paketi geliştirici sunucu yapılandırması var (tüm yapılandırmanın bir parçası):

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'i aşağıdaki komutla çalıştırıyorum:

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

Ben kullanarak dev sunucuya erişim elde edebilirsiniz http://localhost:8080benim yerel makinede, ama aynı zamanda benim mobil, tablet benim sunucuya erişmek istediğiniz (bunlar aynı Wi-Fi ağına içindedir).

Nasıl etkinleştirebilirim? Teşekkürler!


Ana bilgisayarın 0.0.0.0 olarak ayarlandığı göz önüne alındığında, bu zaten çalışmalı gibi görünüyor.
Felix Kling

@FelixKling ama bunun için iPhone'umun Safari'sinde hangi ip adresini kullanmalıyım?
malcoauri

Sunucunun çalıştığı makinenin IP'si.
Felix Kling

2
Ben sadece çalışmak için alabilir webpack-dev-server --host=0.0.0.0 --disable-host-check --useLocalIpbkz github.com/webpack/webpack-dev-server/issues/882
Nickofthyme

Yanıtlar:


201

(Mac kullanıyorsanız ve benimki gibi bir ağ kullanıyorsanız.)

Webpack-dev-server'ı çalıştırın --host 0.0.0.0- bu, sunucunun yalnızca localhost'u değil, ağdan gelen istekleri dinlemesini sağlar.

Bilgisayarınızın adresini ağ üzerinde bulun. Terminalde, bölümü veya benzeri bir şeye sahip olanı yazın ifconfigve arayınen1inet 192.168.1.111

Aynı ağdaki mobil cihazınızda, ziyaret edin http://192.168.1.111:8080ve sıcak yeniden yükleme geliştirmenin keyfini çıkarın.


4
Benim için de çalışıyor ama boş bir sayfa alıyorum. Sekmeler arasında gezinirken kaydırıp bir site başlığına sahip olabilirim. Bunu nasıl düzelteceğine dair bir fikrin var mı?
moesphemie

2
Ayrıca Ubuntu 17.10'da da çalışır. Eğer ifconfigyüklü değilse, IP adresi üzerinden bulunabilirip addr show
TitanFighter

1
Dev sunucusunu çalıştırmak için --host 0.0.0.0bazı yapılandırma dosyalarını güncellemeli miyiz yoksa çalıştırabilir npm run dev --host 0.0.0.0miyim? Çünkü şu anda hiçbir şeyi değiştirmeden komutu çalıştırdığımda hata veriyor. Bazı yapılandırma dosyasını güncellememiz gerekiyorsa, lütfen bize dosya adını / dizinini söyler misiniz?
PrintlnParams

npm run dev --host 0.0.0.0, programın modül adı olarak "0.0.0.0" aradığını gösteren hatayı atar. Projemin index.js dosyasındaki değeri "localhost" dan "0.0.0.0" olarak değiştirdiğimde çalıştı.
Vasily Hall

1
hala benim için 18 Aralık'ta çalışıyor. Bilginize, terminalde IP Adresini aramak yerine aşağıdakileri yapıyorum: cmd + [boşluk]> Ağ Yardımcı Programı, IP Adresim ikinci öğedir. Her denediğimde işe yarıyor gibi görünüyor.
jared

91

IP adresinizi doğrudan web paketi yapılandırma dosyasında ayarlayabilirsiniz:

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

1
Bu benim için çalıştı, değer işe yarayan 0.0.0.0.
Vasily Hall

2
Windows'ta benim için wifi ile çalıştı, ana bilgisayarı yazdımipconfig > IPv4 Address
URL87

1
Bu, açık ara en iyisi, cüretle, sadece cevap. Neden böyle işaretlenmedi ?!
Kamal

open: trueBayrağı da kullanmak istiyorsanız , o zaman da ayarlayabilirsiniz openPage: 'http://localhost:8080've tarayıcınız 0.0.0.0:8080'i otomatik olarak yüklemeyi denemek ve başarısız olmak yerine düzgün bir şekilde yeniden başlayacaktır.
Mark

Çalışır, ancak başka birinin cihazınıza bağlanabileceği halka açık yerlerde 0.0.0.0'ın bağlayıcılığına dikkat edin. Verilerinizin çalınmasına neden olabilir. Dev sunucusu için şunun gibi bir güvenlik duvarına ihtiyacınız olabilir: github.com/funbox/webpack-dev-server-firewall
Igor Adamenko

16

Mükemmel bir çözüm olmayabilir ama bunun için ngrok'u kullanabileceğinizi düşünüyorum . Ngrok , yerel bir web sunucusunu internete açmanıza yardımcı olabilir . Ngrok'u yerel geliştirme sunucunuza yönlendirebilir ve ardından uygulamanızı ngrok URL'sini kullanacak şekilde yapılandırabilirsiniz.

Örneğin, sunucunuzun 8080 numaralı bağlantı noktasında çalıştığını varsayalım . Bunu çalıştırarak dış dünyaya göstermek için ngrok'u kullanabilirsiniz.

./ngrok http 8080

ngrok çıktısı burada

İyi olan şey , çalışmanızı test etmek veya göstermek için dünyadaki herhangi bir kişiye verdiğiniz, maruz kalan url'nin ngrokdaha güvenli bir https sürümünü sağlamasıdır.

Ayrıca, komutta , açığa çıkan url'de rastgele dizge yerine kullanıcı dostu bir ana bilgisayar adı ayarlamak ve diğer birçok şey gibi birçok özelleştirme vardır .

Yalnızca web sitenizi mobil yanıt verme yeteneğini kontrol etmek için açmak istiyorsanız, browersync'e gitmelisiniz .


8

Benim için sonunda yardımcı olan şey bunu webpack-dev-server yapılandırmasına eklemekti:

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

ve sonra babel'in webpack.config.js dosyasını değiştirerek:

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

Şimdi sadece bilgisayarınızın ana bilgisayar adını alın ( hostnameOSX'in terminalinde), tanımladığınız bağlantı noktasını ekleyin ve mobil cihazınıza devam edebilirsiniz.

Ngrok.io ile karşılaştırıldığında bu çözüm, react'in çalışırken yeniden yükleme modülünü mobil cihazlarda kullanmanıza da izin verecektir.


7

Forresto'nun cevabına ek bilgi eklemek için yorum yapamadım, ancak burada gelecekte (2019) yalnızca --publicbir güvenlik açığı nedeniyle bir bayrak eklemeniz gerekecek --host 0.0.0.0. Daha fazla ayrıntı için bu yoruma göz atın .

Bir yanıt olarak "diğer yanıtlara yanıt vermekten" kaçınmak için, işte forresto'nun tavsiyesi ve bunun işe yaraması için ihtiyacınız olan ek ayrıntılar:

İkisini de ekleyin:

--host 0.0.0.0

ve

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

hostname (benim için (isim) s-macbook-pro.local) ve port, erişmeye çalıştığınız porttur (yine benim için 8081).

İşte package.json'um şöyle görünüyor:

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

Ne yazık ki bu benim için işe yaramadı. Windows 10'dayım ve geliştirici web uygulamama cep telefonumla erişemiyorum. Mobil tarayıcı bana bir zaman aşımı hatası veriyor. Aynı Windows 10 dizüstü bilgisayarda bir web uygulaması başlattığımda, ancak bir tomcat aracılığıyla sunduğumda, Windows dizüstü bilgisayarımın ip adresini ve ardından bağlantı noktası numarasını yazarak bu yerel web uygulamasına erişebiliyorum. Bunun neden mümkün olduğunu gerçekten bilmiyorum ama bir web paketi geliştirici sunucusunda çalışan yerel bir web uygulamasını açamıyorum. Mobil telefonum için yerel web uygulamasına erişim sağlamak için başka ne deneyebileceğim konusunda herhangi bir fikri olan var mı?
ampersand83
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.