npm在ctrl + c上运行poststop脚本

时间:2018-05-22 15:02:51

标签: mongodb yarnpkg npm-scripts sigterm

我的drawMap() { this.myMap = L.map('map', { crs: L.CRS.Simple }); ... this.myMap.on(L.Draw.Event.CREATED,this.onCreate.bind(this) ); } onCreate (e) { let type = e.layerType; let layer = e.layer; this.myOtherMethod(); // this.myOtherMethod is not a function drawLayer.addLayer(layer); } myOtherMethod() { console.log('hello world!'); } 脚本部分如下所示。

package.json

我在启动服务器之前使用前挂钩和后挂钩启动"scripts": { "prestart": "mongod", "start": "NODE_ENV=prod node server.js", "poststop": "mongo admin --eval 'db.shutdownServer()'", "predev": "mongod", "dev": "NODE_ENV=dev nodemon server.js" }, 。然后我使用 ctrl + c 杀死我的服务器。不幸的是,这不会执行mongod脚本。因此,第二次调用poststop会引发错误并中止,因为npm/yarn start/dev已在运行。

  

另一个mongod实例已在/ data / db目录中运行,   终止

我可以以某种方式在 ctrl + c 上调用mongod吗?

1 个答案:

答案 0 :(得分:1)

您需要捕获SIGINT信号并返回成功退出代码(0)

"scripts": {
  "prestart": "mongod",
  "start": "trap 'exit 0' SIGINT; NODE_ENV=prod node server.js",
  "poststart": "mongo admin --eval 'db.shutdownServer()'",
  "predev": "mongod",
  "dev": "NODE_ENV=dev nodemon server.js"
},