2016-05-19 11 views
2

次の例を使用してエクスプレスサーバーを設定します:https://github.com/sogko/gulp-recipes/tree/master/browser-sync-nodemon-expressjsエラー:listen EADDRINUSE 127.0.0.1:3000

私はgulpを使って、Polymerプロジェクトの細分化、加硫、折りたたみなどのいくつかのプロセスを開始します。私はまだ私の一口ログで終わる次のエラーを取得するすべての

// Build and serve the output from the dist build 
appsPaths.forEach(function(app) { 
    gulp.task('serve:dist:' + app, 
    ['browser-sync', 'default:' + app]); 
}); 

gulp.task('browser-sync', ['nodemon'], function() { 

    // for more browser-sync config options: http://www.browsersync.io/docs/options/ 
    browserSync({ 
    notify: false, 
    snippetOptions: { 
     rule: { 
     match: '<span id="browser-sync-binding"></span>', 
     fn: function (snippet) { 
      return snippet; 
     } 
     } 
    }, 

    // informs browser-sync to proxy our expressjs app which would run at the following location 
    proxy: 'http://localhost:3000', 

    // informs browser-sync to use the following port for the proxied app 
    // notice that the default port is 3000, which would clash with our expressjs 
    port: 4000, 

    // open the proxied app in chrome 
    browser: ['google-chrome'] 
    }); 
}); 

gulp.task('nodemon', function (cb) { 
    var called = false; 
    return $.nodemon({ 

    // nodemon our expressjs server 
    script: 'server/app.js', 

    // watch core server file(s) that require server restart on change 
    watch: ['server/app.js'] 
    }) 
    .on('start', function onStart() { 
     // ensure start only got called once 
     if (!called) { cb(); } 
     called = true; 
    }) 
    .on('restart', function onRestart() { 
     // reload connected browsers after a slight delay 
     setTimeout(function reload() { 
     browserSync.reload({ 
      stream: false 
     }); 
     }, BROWSER_SYNC_RELOAD_DELAY); 
    }); 
}); 

を今これは素晴らしい作品ながら::

gulpfile.jsは364行大きいですが、これは重要な部分である

^CDaniels-iMac:polymer dani$ gulp serve:dist:domain.com 
[22:33:10] Using gulpfile ~/dev/company/polymer/gulpfile.js 
[22:33:10] Starting 'nodemon'... 
[22:33:10] Starting 'clean:domain.com'... 
[22:33:10] Finished 'clean:domain.com' after 8.56 ms 
[22:33:10] Starting 'default:domain.com'... 
[22:33:10] Starting 'copy:domain.com'... 
[22:33:10] Starting 'styles:domain.com'... 
[22:33:11] Finished 'styles:domain.com' after 295 ms 
[22:33:11] [nodemon] 1.9.2 
[22:33:11] [nodemon] to restart at any time, enter `rs` 
[22:33:11] [nodemon] watching: server/app.js 
[22:33:11] [nodemon] starting `node server/app.js` 
[22:33:11] Finished 'nodemon' after 570 ms 
[22:33:11] Starting 'browser-sync'... 
[22:33:11] Finished 'browser-sync' after 20 ms 
events.js:154 
     throw er; // Unhandled 'error' event 
    ^

Error: listen EADDRINUSE 127.0.0.1:3000 
    at Object.exports._errnoException (util.js:890:11) 
    at exports._exceptionWithHostPort (util.js:913:20) 
    at Server._listen2 (net.js:1234:14) 
    at listen (net.js:1270:10) 
    at net.js:1379:9 
    at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:63:16) 
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:82:10) 
[22:33:11] [nodemon] app crashed - waiting for file changes before starting... 
[BS] Proxying: http://localhost:3000 
[BS] Access URLs: 
---------------------------------- 
     Local: http://localhost:4000 
    External: http://10.0.1.28:4000 
---------------------------------- 
      UI: http://localhost:3001 
UI External: http://10.0.1.28:3001 
---------------------------------- 
[22:33:12] copy all files 16.03 MB 
[22:33:12] Finished 'copy:domain.com' after 1.78 s 
[22:33:12] Starting 'elements:domain.com'... 
[22:33:12] Finished 'elements:domain.com' after 5.39 ms 
[22:33:12] Starting 'jshint:domain.com'... 
[22:33:12] Starting 'images:domain.com'... 
[22:33:12] Starting 'fonts:domain.com'... 
[22:33:12] Starting 'html:domain.com'... 
[22:33:12] Finished 'images:domain.com' after 339 ms 
[22:33:12] Finished 'fonts:domain.com' after 157 ms 
[BS] Reloading Browsers... 

これは私が前と一気スクリプトの実行をトリガーした後に見たものである:だから

Daniels-iMac:polymer dani$ lsof -i tcp:3000 
Daniels-iMac:polymer dani$ 
Daniels-iMac:polymer dani$ lsof -i tcp:3000 
COMMAND PID USER FD TYPE    DEVICE SIZE/OFF NODE NAME 
node 95580 dani 19u IPv4 0x8560662b0408bad3  0t0 TCP localhost:hbci (LISTEN) 

3000番ポートではあまり進んでいないようです。このエラーを解決するにはどうすればよいですか?

+0

あなたは既にポート3000でノードを実行しているようです。この質問をチェックするとプロセスを終了できます。http://stackoverflow.com/questions/3855127/find-and-kill-process-locking-port-3000-on -mac –

+0

私はそれをカバーしている。それはポート3000で実行されていないか、または実行するかどうかに応じて 'lsof -i tcp:3000'を実行したときにpidの結果を得ました。だからすでに別のプロセスが実行されているわけではありません、私はいくつかの他の不可能なポートを試しました:すべて同じエラーを生成します。それはエクスプレスサーバのように、何とかnodemonを使って2回起動するように見えます。 – Dani

答えて

1

私はいくつかのパスがあると仮定してforEachのためにhttp://localhost:3000の同じポートでbrowserSyncを実行していると思います。

+0

残念ながら、それは否定的です。 nodemonとbrowser-syncタスク関数の両方でconsole.logを起動すると、両方とも1回だけトリガされます。 appsPath配列にアイテムを1つだけ追加する場合も同じですが、問題はそのまま残ります。 gulp.task関数を実行するときは、タスク自体を定義するだけなので、この動作は予期したとおりです。あなたはそれを実行しません。 – Dani

+0

d0h!それは正確ではありませんでしたが。私は、gulpfileの上にあるサーバーをrunnedして見落とされたtryout requireステートメントを忘れていました。あなたの助けに感謝Wilson Alberto – Dani

+0

根本的な原因を見つけてうれしいです! Gulpはいくつかのより良いデバッグツールを使用することができますが、これはタスクを記録することによって解決される問題の1つと同様です –

関連する問題