Возобновлять сервер NodeJS с каждым изменением в index?

Я собрал Парсе Сервер в ubuntu, и каждый раз, когда я добавляю изменение к index.js должен возобновлять, что медлит 4 или 5 секунд с тем, чтобы возвращаться в жизнь.

Есть какой-то более оптимальный способ добавлять изменения без того, чтобы упал server?

1
задан 10.07.2016, 15:43
2 ответа

Ответ да и нет

Для примера, который ты спросил (связь в основание) есть решение. Вместо того, чтобы иметь твой такой index.js:

var dbMotor = require('my-sql'); // o require('pg-promise-strict'); 
var config = require('./config.json');
var dbOpen = dbMotor.connect(config.parametrosDb);

var app = require('express')();

app.get('/data', function(req, res){
   dbOpen.query("SELECT ALL ... ", function(err, data){
      res.end(data);
   });
});

возможно иметь переинициатора базы данных, которая только возобновляет эту часть:

var dbMotor = require('my-sql'); // o require('pg-promise-strict'); 
var config;
var dbOpen;

var app = require('express')();

function start(){
  config = require('./config.json');
  dbOpen = dbMotor.connect(config.parametrosDb);
}

start(); // lee todo al inciar el servidor

app.get('/reset', function(req, res){
  start(); // vuelve a leer todo al resetear
  res.end("reset ok at "+new Date());
});

app.get('/data', function(req, res){
  dbOpen.query("SELECT ALL ... ", function(err, data){
    res.end(data);
  });
});

Анализ ответа

  1. Это упрощение (нет многих вещей, listen, закрывать базу данных, если он будет вновь открываться, и т.д.)
  2. Преимущество состоит в том, что не нужно отрезать выполнение node index.js
  3. Важное, которое нужно наблюдать, состоит в том, что да или да нужно вновь выполнять start нужно видеть, сколько 4 óо вторые 5 это уносят задания, которые нужно вновь делать
  4. В этом упрощении нужно звонить в /reset с браузера, могут быть выбранными другие активаторы, например один watchFile что наблюдал, если были изменения в файле конфигурации.
  5. Другая альтернатива состоит в том, чтобы иметь один start для каждого типа вещи, одного для базы данных, другого, чтобы читать templates диска, другого, чтобы изменять порт, и т.д.

Заключение

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

2
ответ дан 24.11.2019, 13:52

он устанавливает forever

sudo npm install forever --global

и потом ты начинаешь твой app (в способе debug) с:

forever -f -w index.js

потом, если ты делаешь какое-то изменение в твоем index.js, ты будешь считать выход этой

error: restarting script because change changed
error: Forever detected script was killed by signal: SIGKILL
error: Script restart attempt #1

flag-w показывает в node, что был внимательным к какому-то изменению в архиве index.js, и что был возобновлен, интерпретирует это ошибкой, но он это не.

2
ответ дан 24.11.2019, 13:52
  • 1
    Что-то похожее существует, чтобы способствовать тому, чтобы он вновь называл start, изменив X файл? Я предполагаю, что это watch и watchFile он служит, но не идя на такой низкий уровень? –  Pablo Cegarra 13.07.2016, 19:57