Як зробити так, щоб веб-пакет Dev-сервера запускався на порт 80 і на 0.0.0.0, щоб зробити його загальнодоступним?


180

Я новачок у цілому світі nodejs / reactjs, тож вибачтесь, якщо моє запитання звучить нерозумно. Тому я граю з reactabular.js .

Щоразу, коли я це роблю, npm startце завжди працює localhost:8080.

Як я можу змінити його на виконання, 0.0.0.0:8080щоб зробити його загальнодоступним? Я намагався прочитати вихідний код у вищевказаному репо, але не зміг знайти файл, який робить це налаштування.

Крім того, додати до цього - як змусити його працювати на порту, 80якщо це взагалі можливо?

Відповіді:


233

Щось подібне працювало на мене. Я здогадуюсь, це має працювати для вас.

Запустити webpack-dev за допомогою цього

webpack-dev-server --host 0.0.0.0 --port 80

І встановіть це в webpack.config.js

entry: [
    'webpack-dev-server/client?http://0.0.0.0:80',
     config.paths.demo
 ]

Примітка Якщо ви використовуєте гарячу завантаження, вам доведеться це зробити.

Запустити webpack-dev за допомогою цього

webpack-dev-server --host 0.0.0.0 --port 80

І встановіть це в webpack.config.js

entry: [
    'webpack-dev-server/client?http://0.0.0.0:80',
    'webpack/hot/only-dev-server',
     config.paths.demo
 ],

....
plugins:[new webpack.HotModuleReplacementPlugin()]

1
Привіт, я новачок у цьому, але хотів би використовувати редукс для мого клієнтського сценарію. Проблема полягає в тому, що програма - це .net-додаток, який обслуговує кінцеві точки вмісту та json. Отже, щоб зробити це під час розробки, мені потрібно додати <script src="http://localhost:8080/webpack-dev-server.js"></script>на сторінку та встановити якийсь міждомен, що дозволяє плагін? Ці інструменти виглядають цікавими, але, здається, припускають, що і ваш сервер є вузлом чи мені щось не вистачає?
HMR

1
Можливо, це допоможе мені: webpack.github.io/docs/webpack-dev-server.html#proxy Я б подумав використовувати проксі для всього, крім запитів для файлів javascript та деяких запитів, зроблених сервером вебпакету, гарячим завантажувачем і скороченим timetravel. так /data:image ..., ... .jsі/sockjs-node...
HMR

Якщо ви отримали Недійсний заголовок хоста, можливо, вам доведеться встановити параметр enableHostCheck на істинне в webpack.serve.config.js. Див. Github.com/webpack/webpack-dev-server/isissue/882 . Залежно від вашої ситуації це може бути отвір для безпеки, тому будьте обережні.
Брайан Детерлінг

131

Ось як я це зробив, і, здається, працює досить добре.

У файл webpack.config.js додайте наступне:

devServer: {
    inline:true,
    port: 8008
  },

Очевидно, ви можете використовувати будь-який порт, який не суперечить іншому. Я згадую питання конфлікту лише тому, що витратив близько 4 годин. щоб вирішити проблему лише для того, щоб виявити, що мої служби працюють на тому ж порту.


Я вважаю, це замість того, щоб вказати хост і порт у розділі вводу файлу config?
JoeTidee

2
Не могли б ви додати посилання на документацію ?
водяний

1
Просте додавання inline: true працював на мене. BTW файл веб-упаковки, яку я редагував, був "webpack.dev.conf.js (станом на березень 2018 року).
Шон О

68

Налаштуйте веб-пакет (у webpack.config.js) за допомогою:

devServer: {
  // ...
  host: '0.0.0.0',
  port: 80,
  // ...
}

2
це не працює для devServer: {inline: true, host: '0.0.0.0', порт: 8088},
NK Chaudhary

Це працює для мене, коли я використовую (webpack.config): devServer: {host: 'xx.xx.xx.xxx', порт: 8089},
Dijo

Це вирішило дуже тісно пов’язану для мене проблему, намагаючись пройти курс « Сучасний Реакт з Редуком» на Удемі . Я запускаю своє середовище розробки в Windows у віртуальному вікні Vagrant . Курс не містить абсолютно ніяких вказівок щодо створення середовища розробки.
Вінс

Так, це вирішило проблему, з якою у мене був веб-пакет у екземплярі Cloud9. Дякую!
Маніяк

Я зміг змінити номер порту за допомогою наведеного вище фрагмента, але хост все ще не змінився. Я намагався зробити хост 0.0.0.0, щоб я міг отримати доступ до сайту з ip-адреси, але це не вийшло. Будь-яка допомога, як цього досягти?
Ріто

26

Я новачок у розробці JavaScript та ReactJS. Мені не вдалося знайти відповідь, яка працює для мене, доки не з'ясував її, переглянувши код реакції-скриптів. Використовуючи ReactJS 15.4.1+ з використанням реакційних скриптів, ви можете почати зі спеціального хоста та / або порту, використовуючи змінні середовища:

HOST='0.0.0.0' PORT=8080 npm start

Сподіваємось, це допомагає новачкам, як я.


16

Слідом працював для мене -

1) Package.jsonДодайте це:

"scripts": {
    "dev": "webpack-dev-server --progress --colors"
}

2) webpack.config.jsДодайте це до об’єкта config, який ви експортуєте:

devServer: {
    host: "GACDTL001SS369k", // Your Computer Name
    port: 8080
}

3) Тепер на термінальному типі: npm run dev

4) Після компіляції №3 і готового просто перейдіть до свого браузера і введіть адресу як http://GACDTL001SS369k:8080/

Сподіваємось, ваш додаток зараз працює з зовнішньою URL-адресою, до якої інші користувачі можуть отримати доступ до тієї ж мережі.

PS: GACDTL001SS369kбуло моє ім'я комп’ютера, тому замініть тим, що є на вашій машині.


4

Якщо ви знаходитесь у програмі React, створеній за допомогою "create-react-app", перейдіть до свого package.jsonі змініть

"start": "react-scripts start",

до ... ( unix )

"start": "PORT=80 react-scripts start",

або до ... ( виграти )

"start": "set PORT=3005 && react-scripts start"


або відредагуйте node_modules / react-script / script / start.js та змініть DEFAULT_PORT та HOST. Просто захистіть файл від перезапису, коли нові версії оновлюють файли в npm update.
Роджеліо Тривіньо

1

Після мене працював у файлі конфігурації JSON:

"scripts": {
  "start": "webpack-dev-server --host 127.0.0.1 --port 80 ./js/index.js"
},

1

Я боровся з деякими іншими відповідями. (Моя установка: Я працюю npm run dev, з webpack 3.12.0, після створення свого проекту за vue init webpackдопомогою віртуальної скриньки Ubuntu 18.04 під Windows. У мене настроєний бродячий, щоб переслати порт 3000 хосту.)

  • На жаль кладемо npm run dev --host 0.0.0.0 --port 3000 не спрацювало --- воно все ще працювало на localhost: 8080.
  • Крім того, файл webpack.config.jsне існував, і його створення також не допомогло.
  • Тоді я знайшов, що файли конфігурації тепер знаходяться в build/webpack.dev.conf.jsbuild/webpack.base.conf.jsі build/webpack.prod.conf.js). Однак, це не виглядало гарною ідеєю змінювати ці файли, оскільки вони насправді читають HOST і PORT з process.env.

Тож я шукав, як встановити змінні process.env та досягнув успіху, виконавши команду:

HOST=0.0.0.0 PORT=3000 npm run dev

Після цього я нарешті отримую "Ваша програма працює тут: http://0.0.0.0:3000 ", і я нарешті зможу побачити це, переглянувши localhost:3000з хост-машини.

РЕДАКТУВАННЯ. Інший спосіб зробити це - відредагувати хост розробників та порт в config/index.js.


1

Для мене: зміна хоста прослуховування працювала:

.listen(3000, 'localhost', function (err, result) {
        if (err) {
            console.log(err);
        }
        console.log('Listening at localhost:3000');
    });

було змінено на:

.listen(3000, '0.0.0.0', function (err, result) {
        if (err) {
            console.log(err);
        }
        console.log('Listening at localhost:3000');
    });

і сервер почав слухати на 0.0.0.0


0

Я спробував рішення вище, але не пощастило. Я помітив цей рядок у пакеті мого проекту.json:

 "bin": {
"webpack-dev-server": "bin/webpack-dev-server.js"

},

Я подивився bin/webpack-dev-server.jsі знайшов цю лінію:

.describe("port", "The port").default("port", 8080)

Я змінив порт на 3000. Трохи жорстокий підхід, але це працювало на мене.


0

У package.json змініть значення "start" наступним чином

Примітка: запустіть $ sudo npm start , вам потрібно використовувати sudo для запуску сценаріїв реакції на порт 80

введіть тут опис зображення


0

Для мене цей код спрацював. Просто додайте його у свій package.jsonфайл:

"scripts": {
    "dev-server": "encore dev-server",
    "dev": "webpack-dev-server --progress --colors",
    "watch": "encore dev --watch",
    "build": "encore production --progress"
},

І запустіть сценарій «побудувати», запустивши npm run build


-1

Я спробував це легко використовувати інший порт:

PORT=80 npm run dev
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.