我有两个脚本,我们称它们为“第一个”和“第二个”。
我对“第一个”脚本没有任何疑问,下面是它的外观:
const fetch = require('node-fetch');
console.log(typeof fetch); // prints: function
fetch(URLHERE)
.then(res => res.json())
.then(res => {
console.log(res);
});
这是一个“第二”脚本,运行后不会停止运行
const APIWRAPPER = require('APIWRAPPER');
const api = new APIWRAPPER(TOKEN);
console.log(typeof api); // prints: object
api.find(QUERY)
.then(json => {
console.log(json);
});
两个脚本都输出相同的内容。
但是当我运行“第二”脚本时,它不会停止。我必须在赢终端中按Ctrl + C。
您可能会问,偶尔按Ctrl + C对我来说有这么大的问题吗?不,不是,但是我试图用GitHub Action触发此脚本,并且它不断运行,给我一个选择:取消它。
P.S。我正在使用node run first
和node run second
来触发这些脚本。
package.json:
{
...
"scripts": {
"first": "node ./scripts/first.js",
"second": "node ./scripts/second.js"
},
}
我尝试过的事情:
const APIWRAPPER = require('APIWRAPPER');
const api = new APIWRAPPER(TOKEN);
console.log(typeof api); // prints: object
api.find(QUERY)
.then(json => {
console.log(json);
process.exit(0); // Adding this
});
但是我不确定这是否是好习惯,这只是我发现的第一件事。
答案 0 :(得分:0)
我不太了解您的脚本,但是我知道您可以通过默认情况下设置特定的超时时间来自动取消管道:
job.<id>.timeout-minutes
设置整个作业的超时时间
job.<id>.steps.timeout-minutes
为单个步骤设置超时
您的情况:
my-job:
runs-on: ubuntu-latest
timeout-minutes: 30
答案 1 :(得分:0)
如果脚本没有停止,则意味着您的APIWRAPPER
仍在执行某些操作,例如打开与api的连接(Websocket,令牌刷新逻辑等)。
因此,您应该查看APIWRAPPER
是否具有某种stop
/ shutdown
机制。
编辑:
process.exit(0);
应该避免,因为您可能会在操作过程中杀死“某些东西”。