2015-12-08 9 views

Odpowiedz

0

Myślę, że heroku local będzie watch dla zmian zasobów statycznych (kod po stronie klienta). Jednak nie jest to idealne rozwiązanie do ręcznego restartowania serwera przy każdej zmianie kodu źródłowego wprowadzanego na serwerze WWW (kod po stronie serwera).

Jeśli tworzysz aplikację NodeJS, moja sugestia polega na wypróbowaniu polecenia watch, które zapewnia Gulp. Jednak wymaga to również (a) zainstalowania Gulp i (b) napisania skryptu Gulp. Znowu to rozwiązanie będzie działać tylko dla NodeJS, a te kroki nie będą potrzebne, jeśli heroku local obejrzy pliki dla ciebie.

  1. Install NodeJS
  2. Install Gulp

    npm install gulp --save-dev 
    
  3. Dodaj skrypt haustem (gdzie Procfile mieszka)

    UWAGA: Nie byłem w stanie uzyskać następujący kod do watch działa z powodzeniem, ale może stanowić szablon dla innych, aby stworzyć działające rozwiązanie.

    var gulp = require('gulp'); 
    var exec = require('child_process').exec; 
    
    gulp.task('heroku-local', function() { 
        exec("heroku local"); 
    }); 
    
    gulp.task('heroku-local:watch', function() { 
        gulp.watch([ 
        'file-to-watch', 
        'folder-to-watch/**/*' 
        ], ['heroku-local']); 
    }); 
    
  4. Uruchom skrypt Gulp (z katalogu, w którym Procfile mieszka)

    gulp heroku-local:watch 
    
+0

Dzięki. Ale nie mógł sprawić, żeby działało ... – IsmailS

+0

Czy próbowałeś metody "odradzania"? https://nodejs.org/api/child_process.html # child_process_child_process_spawn_command_args_options To może zadziałać ... – tfmontague

+0

Używam obserwatora łyka, aby zakończyć proces węzła, odwiedzając specjalną trasę, którą utworzyłem, '/ killme', a następnie uruchamiając ją ponownie. Oczywiście ten URL nie powinien istnieć na stronie internetowej na żywo, ale jest przydatny lokalnie. w gulpfile: 'exec ("curl http: // localhost: 5000/KillMe; Heroku lokalny");' w moich node.js/express aplikacja: '' 'router.get ('/ KillMe ', function (req, res) { \t process.exit (1); }); '' ' – Lucas

2

heroku local prostu wykorzystuje node-foreman (https://www.npmjs.com/package/heroku-local), więc jest łatwiejsza w użyciu, które bezpośrednio do oglądania.

Najpierw należy zainstalować foreman i nodemon:

npm i --save-dev foreman nodemon 

Teraz trzeba skonfigurować dwa skrypty w package.json:

{ 
    ... 
    "scripts": { 
    "start": "nf start", 
    "watch": "nodemon --watch directory-to-watch" 
    }, 
    ... 
} 

Teraz można uruchomić aplikację, podczas gdy on ogląda ten katalog i ładuje się po zmianach za pomocą

4

Najprostszym sposobem na to jest uruchomienie nodemon z heroku local jako plik wykonywalny - tj. nodemon --exec "heroku local".

Jednakże, heroku local wychodzi z niezerowym kodem wyjścia dla domyślnego sygnału wyłączenia nodemon (SIGUSR2), więc musisz dodać dodatkową flagę do nodemon, aby ustawić sygnał przerwania na SIGTERM.

nodemon --exec "heroku local" --signal SIGTERM

(testowane [email protected], [email protected], [email protected])

+0

Działa zgodnie z życzeniem - restartując' heroku local' z dowolnymi zmianami. –

+0

Działa świetnie! Dzięki! – ohjeeez

Powiązane problemy