Как запустить внутренний сервер с Node? - PullRequest
0 голосов
/ 15 мая 2018

Я изучаю Vue.js, и из базового шаблона vue init webpack my-project я бы хотел запустить бэкэнд.

Интерфейс запускается с помощью webpack, но мой server.js файл должен запускаться отдельно с использованием node server.js. Как я могу начать их вместе?

Я искал некоторые базовые примеры, но их трудно найти.

В настоящее время у меня есть package.json это:

{
  "scripts": {
    "client": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",

    "server": "nodemon src/server/server.js --exec babel-node"
  },
  // ...
}

Это замечательно, но клиент и сервер работают на разных портах. В производственном приложении мне нужно будет использовать только один порт.

Как это возможно?

Ответы [ 3 ]

0 голосов
/ 15 мая 2018

Это немного мнения, но;В идеале, ваша передняя часть и задняя часть должны существовать отдельно.Но если вам проще иметь комбинированную кодовую базу, в которой запуск одного запускает другой, вы можете использовать webpack-dev-middleware .

Когда вы говорите, что у вас есть отдельный server.jsфайл, звучит так, как будто вы хотите иметь возможность повесить дополнительное промежуточное ПО с сервера, который настраивает веб-пакет.webpack-dev-middleware предоставляет серверу возможность повесить любое промежуточное программное обеспечение на то, что вы хотите, что означает 1 сервер, а не 2 экземпляра узла.

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

Примечаниехотя ваш пользовательский интерфейс, если вы не используете что-то вроде nuxt, будет просто статическим контентом после запуска npm build.Вы не будете запускать webpack в производстве.

0 голосов
/ 18 мая 2018

В производственной среде

Вот моя обычная стратегия развертывания

Я использую Nginx в качестве статического веб-сервера и HTTP-прокси

Я использую pm2 для управления API-интерфейсом узла

PM2 - отличный инструмент для управления процессами с несколькими функциями

Итак, вам нужно построить (возможно, npm run build) ваше приложение vue js, тогда вы получите ваши статические ресурсы в папке dist / build, содержащей только статический контент, с index.html в качестве точки входа

Запустите сервер вашего узла с pm2, как показано ниже

pm2 start server.js --name='api'

Вот пример конфигурации Nginx, проксирующий API узла и обслуживающий статический контент, который он находит по адресу /etc/nginx/sites-available/default

server {
    listen *:80;

    server_name localhost; ## could be  www.yourdomain.com

    location / {
          root /home/me/myapp/dist; # your app build path
          try_files $uri index.html;
      }
    location /api {
        proxy_pass http://localhost:5678/api;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_connect_timeout 600000;
        proxy_send_timeout 600000;
        proxy_read_timeout 600000;
        send_timeout 600000;

        gzip on;
        gzip_proxied any;
        gzip_types
            application/json;

    }

Итак, что вы в основном получаете, это приложение Vueдля порта 80 по умолчанию, поэтому вам не нужно указывать порт, и ваш API будет находиться в / api, поэтому ваше приложение vue будет на youdomain.com , а API на youdomain.com /API

В среде разработки

Я обычно не против запустить мой API и интерфейс с двумя командами.Я запускаю их в отдельном терминале для отладки и разработки отдельно.

if you really care about starting them in the single command

Что вы можете сделать, это создать новую команду в вашем пакете. Json

"start":"npm run server && npm run client"
0 голосов
/ 15 мая 2018

Попробуйте PM2

PM2 - это инструмент управления процессами для запуска, остановки и мониторинга приложений Node JS.

Прочтите это руководство, как одновременно запускать Express и Webpack Dev Server.

Одновременный запуск Express и Webpack Dev Server

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...