Есть некоторая конфигурация сервера webpack dev (это часть всей конфигурации):
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).
Как я могу это включить? Спасибо!
webpack-dev-server --host=0.0.0.0 --disable-host-check --useLocalIp
SEE github.com/webpack/webpack-dev-server/issues/882Ответы:
(Если у вас Mac и сеть такая же, как у меня.)
Запустите webpack-dev-server с
--host 0.0.0.0
- это позволяет серверу прослушивать запросы из сети, а не только из localhost.Найдите адрес своего компьютера в сети. В терминале введите
ifconfig
и найдитеen1
раздел или тот, в котором есть что-то вродеinet 192.168.1.111
На своем мобильном устройстве в той же сети посетите
http://192.168.1.111:8080
и наслаждайтесь горячей перезагрузкой dev bliss.источник
ifconfig
не установлен, IP-адрес можно найти черезip addr show
--host 0.0.0.0
Должны ли мы по-прежнему обновлять какой-то файл конфигурации, чтобы запустить сервер разработки , или я могу просто запуститьnpm run dev --host 0.0.0.0
? Потому что в настоящее время, когда я запускаю команду, ничего не меняя, она выдает ошибку. Если нам действительно нужно обновить какой-либо файл конфигурации, не могли бы вы сообщить нам имя файла / каталог?Вы можете установить свой IP-адрес прямо в конфигурационном файле webpack:
источник
ipconfig > IPv4 Address
open: true
флаг, вы также можете установить,openPage: 'http://localhost:8080'
и ваш браузер снова запустится правильно, вместо того, чтобы пытаться автоматически загрузить 0.0.0.0:8080 и потерпеть неудачу.Возможно, это не идеальное решение, но я думаю, вы можете использовать для этого ngrok . Ngrok может помочь вам открыть доступ к локальному веб-серверу в Интернете. Вы можете указать ngrok на своем локальном сервере разработки, а затем настроить свое приложение на использование URL-адреса ngrok.
Например, предположим, что ваш сервер работает на порту 8080 . Вы можете использовать ngrok, чтобы открыть это внешнему миру, запустив
Хорошо то,
ngrok
что он предоставляет более безопасную https- версию открытого URL-адреса, который вы даете любому другому человеку в мире для тестирования или демонстрации своей работы.Также он имеет множество настроек, доступных в команде, таких как установка удобного для пользователя имени хоста вместо случайной строки в открытом URL-адресе и многое другое.
Если вы просто хотите открыть свой веб-сайт, чтобы проверить отзывчивость мобильных устройств, вам следует использовать браузер Browersync .
источник
В конечном итоге мне помогло добавление этого в конфигурацию webpack-dev-server:
а затем также изменив файл webpack.config.js babel:
Теперь просто получите имя хоста своего компьютера (
hostname
на терминале OSX), добавьте порт, который вы определили, и все готово.По сравнению с ngrok.io это решение также позволит вам использовать модуль горячей перезагрузки react на мобильных устройствах.
источник
Я не мог комментировать, чтобы добавить дополнительную информацию к ответу 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:
источник