经过数小时的调试,我终于找出了我的 Web 应用程序在 Windows 上崩溃的原因。NPM 依赖项有时会使用 记录消息,当运行Foreman + Nodemon组合console.error
时,这似乎在 OSX 和 Windows 上具有不同的行为。
也许对这些工具有更多了解的人可以帮助阐明这一点?这是一个简单的应用程序来说明它:
应用程序.js
console.log('1');
console.error('2');
console.log('3');
在 OSX 和 Windows 7 上运行nodemon --exec node app.js
都很好,并给出了预期的输出:
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 中声明的任何其他进程。
任何想法将不胜感激!
nodemon
注意:我在 Windows (6.2.3) 上尝试了不同版本,结果相同