로컬 네트워크의 장치에서 webpack-dev-server에 액세스하는 방법은 무엇입니까?


112

일부 웹팩 개발 서버 구성이 있습니다 (전체 구성의 일부입니다).

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로컬 컴퓨터에서 사용하여 dev 서버에 액세스 할 수 있지만 모바일, 태블릿 (동일한 Wi-Fi 네트워크에 있음)에서도 서버에 액세스하고 싶습니다.

어떻게 활성화 할 수 있습니까? 감사!


호스트가 0.0.0.0으로 설정되어 있으면 이미 작동하는 것 같습니다.
Felix Kling

@FelixKling이지만 iPhone의 Safari에서 어떤 IP 주소를 사용해야합니까?
malcoauri

서버가 실행되는 시스템의 IP입니다.
Felix Kling

2
난 단지와 함께 작동하도록 그것을 얻을 수있는 webpack-dev-server --host=0.0.0.0 --disable-host-check --useLocalIp참조 github.com/webpack/webpack-dev-server/issues/882
Nickofthyme

답변:


199

(당신이 Mac과 나와 같은 네트워크를 사용한다면.)

--host 0.0.0.0다음을 사용하여 webpack-dev-server 실행 — 서버가 로컬 호스트뿐만 아니라 네트워크의 요청을 수신 할 수 있습니다.

네트워크에서 컴퓨터 주소를 찾습니다. 터미널 ifconfig에서 en1섹션 또는 다음과 같은 섹션을 입력 하고 찾습니다.inet 192.168.1.111

동일한 네트워크의 모바일 장치에서 http://192.168.1.111:8080핫 리로딩 dev bliss를 방문 하여 즐기십시오.


4
나에게도 작동하지만 빈 페이지가 나타납니다. 탭을 탐색 할 때 스크롤하고 사이트 제목을 가질 수 있습니다. 이 문제를 해결하는 방법을 알고 계십니까?
moesphemie

2
Ubuntu 17.10에서도 작동합니다. 경우 ifconfig설치되지 않은, IP 주소를 통해 찾을 수 있습니다ip addr show
TitanFighter

1
를 사용하여 dev 서버를 실행하려면 --host 0.0.0.0여전히 일부 구성 파일을 업데이트해야 npm run dev --host 0.0.0.0합니까? 아니면 그냥 실행할 수 있습니까? 현재 아무것도 변경하지 않고 명령을 실행하면 오류가 발생하기 때문입니다. 구성 파일을 업데이트해야한다면 파일 이름 / 디렉토리를 알려주시겠습니까?
PrintlnParams

npm run dev --host 0.0.0.0은 프로그램이 모듈 이름으로 "0.0.0.0"을 찾고 있음을 나타내는 오류를 발생시킵니다. 내 프로젝트의 index.js 파일에있는 값을 "localhost"에서 "0.0.0.0"으로 변경하면 작동했습니다.
Vasily Hall

1
여전히 나를 위해 12 월 '18에서 일하고 있습니다. 참고로 터미널에서 IP 주소를 찾는 대신 다음을 수행합니다. cmd + [space]> 네트워크 유틸리티, 내 IP 주소가 두 번째 항목입니다. 시도 할 때마다 작동하는 것 같습니다.
jared

90

webpack 구성 파일에서 직접 IP 주소를 설정할 수 있습니다.

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

1
이것은 나를 위해 일했으며 값은 0.0.0.0으로 작동했습니다.
Vasily Hall

2
윈도우에서 그것은 와이파 이로 나를 위해 일했습니다 나는 호스트를 썼습니다ipconfig > IPv4 Address
URL87

1
이것은 단연 최고라고 감히 대답 할뿐입니다. 왜 그렇게 표시되지 않았습니까?!
Kamal

open: true플래그 도 사용하려는 경우 openPage: 'http://localhost:8080'0.0.0.0:8080을 자동으로로드하고 실패하는 대신 설정하면 브라우저가 올바르게 다시 시작됩니다.
마크

작동하지만 다른 사람이 장치에 연결할 수있는 공공 장소에서 0.0.0.0을 바인딩해야합니다. 데이터가 도난 당할 수 있습니다. 다음과 같이 dev 서버용 방화벽이 필요할 수 있습니다. github.com/funbox/webpack-dev-server-firewall
Igor Adamenko

16

완벽한 솔루션이 아닐 수도 있지만 ngrok 를 사용할 수 있다고 생각합니다 . Ngrok로컬 웹 서버 를 인터넷에 노출하는 데 도움을 줄 수 있습니다. 로컬 개발 서버에서 ngrok를 가리킨 다음 ngrok URL을 사용하도록 앱을 구성 할 수 있습니다.

예를 들어 서버가 포트 8080에서 실행되고 있다고 가정합니다 . ngrok를 사용하여 실행을 통해 외부 세계에 노출 할 수 있습니다.

./ngrok http 8080

여기에 ngrok 출력

좋은 점은 작업을 테스트하거나 보여주기 위해 전 세계의 다른 사람에게 제공하는 노출 된 URL ngrok의보다 안전한 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을 사용 중이며 모바일 폰으로 dev webapp에 액세스 할 수 없습니다. 모바일 브라우저에서 시간 초과 오류가 발생합니다. 동일한 Windows 10 노트북에서 웹 앱을 시작하지만 바람둥이를 통해 제공하면 Windows 노트북의 IP 주소와 포트 번호를 입력하여 해당 로컬 웹 앱에 액세스 할 수 있습니다. 왜 이것이 가능한지 모르겠지만 웹팩 devserver에서 실행되는 로컬 웹앱을 열 수 없습니다. 누구든지 내 모바일 폰에 대한 내 로컬 웹 앱 액세스를 만들 수있는 다른 방법에 대한 아이디어가 있습니까?
ampersand83
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.