6

何時間もデバッグした後、私はついに私のWebアプリがWindowsでクラッシュする理由を特定しました。NPMの依存関係は、でメッセージをログに記録することがあります。これは、 Foreman + Nodemonコンボconsole.errorを実行している場合、OSXとWindowsで異なる動作をするようです。

たぶん、これらのツールの知識が豊富な人が、これに光を当てるのに役立つでしょうか?これを説明する簡単なアプリは次のとおりです。

app.js

console.log('1');
console.error('2');
console.log('3');

実行nodemon --exec node app.jsはOSXとWindows7の両方で正常に機能し、期待される出力が得られます。

18 Feb 23:56:25 - [nodemon] v0.6.23
18 Feb 23:56:26 - [nodemon] watching: C:\project
18 Feb 23:56:26 - [nodemon] starting `node app.js`
1
2
3
18 Feb 23:56:26 - [nodemon] clean exit - waiting for changes before restart

ここで、ForemanとProcfileを使用して呼び出しをラップすると、次のようになります。

# Procfile
app: nodemon --exec node app.js

OSXの場合:

> foreman start

23:59:12 app.1  | started with pid 69229
23:59:12 app.1  | 18 Feb 23:59:12 - [nodemon] v0.7.2
23:59:12 app.1  | 18 Feb 23:59:12 - [nodemon] watching: /project
23:59:12 app.1  | 18 Feb 23:59:12 - [nodemon] starting `node app.js`
23:59:12 app.1  | 1
23:59:12 app.1  | 2
23:59:12 app.1  | 3
23:59:12 app.1  | 18 Feb 23:59:12 - [nodemon] clean exit - waiting for changes before restart

Windowsの場合:

> foreman start

23:59:40 app.1  | started with pid 2624
23:59:40 app.1  | 18 Feb 23:59:40 - [nodemon] v0.7.2
23:59:40 app.1  | 18 Feb 23:59:40 - [nodemon] watching: C:\project
23:59:40 app.1  | 18 Feb 23:59:40 - [nodemon] starting `node app.js`
23:59:40 app.1  | 1
23:59:40 app.1  | 18 Feb 23:59:40 - [nodemon] exception in nodemon killing node
23:59:40 app.1  | exited with code 3
23:59:40 system | sending SIGKILL to all processes

アプリは単にクラッシュし、リカバリは行われません。その後、ForemanはProcfileで宣言された他のプロセスをすべて強制終了します。

どんなアイデアでも大歓迎です!

注:nodemonWindows(6.2.3)で別のバージョンを試したところ、同じ結果になりました

4

0 に答える 0