답변:
비슷한 문제가 발생하여 브라우저에서 직접 응용 프로그램을 보는 한 두 가지 솔루션을 발견했습니다.
ngrok http 8080 -host-header="localhost:8080"
ngrok http --host-header=rewrite 8080
분명히 8080을 실행중인 포트로 교체하십시오.
이 솔루션은 임베디드 페이지에서 이것을 사용할 때 여전히 오류를 발생시킵니다. 헤더를 localhost에 다시 작성하기 때문에 헤더가 포함되면 앱이 더 이상 실행되지 않는 localhost를 찾고 있습니다.
-host-header
첫 번째 예는해야한다, 그래서 포트 번호 앞에 와야한다ngrok http -host-header="localhost:8080" 8080
옵션 1
인증을 사용할 필요가없는 경우 ngrok 명령에 구성을 추가 할 수 있습니다
ngrok http 9000 --host-header = 다시 쓰기
또는
ngrok http 9000 --host-header = "localhost : 9000"
그러나이 경우 ngrok 다시 쓰기 헤더와 세션이 ngrok 도메인에 유효하지 않기 때문에 웹 사이트에서 인증이 작동하지 않습니다
옵션 2
웹팩을 사용하는 경우 다음 구성을 추가 할 수 있습니다
devServer: {
disableHostCheck: true
}
이 경우 인증 헤더는 ngrok 도메인에 유효합니다
작동하는 반응 앱에서이 설정을 사용했습니다. 다음을 포함하는 configstrp.js라는 구성 파일을 만들었습니다.
module.exports = {
ngrok: {
// use the local frontend port to connect
enabled: process.env.NODE_ENV !== 'production',
port: process.env.PORT || 3000,
subdomain: process.env.NGROK_SUBDOMAIN,
authtoken: process.env.NGROK_AUTHTOKEN
}, }
서버에 파일이 필요합니다.
const configstrp = require('./config/configstrp.js');
const ngrok = configstrp.ngrok.enabled ? require('ngrok') : null;
그런 식으로 연결
if (ngrok) {
console.log('If nGronk')
ngrok.connect(
{
addr: configstrp.ngrok.port,
subdomain: configstrp.ngrok.subdomain,
authtoken: configstrp.ngrok.authtoken,
host_header:3000
},
(err, url) => {
if (err) {
} else {
}
}
);
}
맞춤 도메인이없는 경우 하위 도메인을 전달하지 마십시오.