scripts icon indicating copy to clipboard operation
scripts copied to clipboard

Env.js在nodejs环境中$.done()无效,似乎没有添加$.isNode()的done逻辑

Open doyoman opened this issue 3 years ago • 8 comments

Env.js在nodejs环境中$.done()无效,似乎没有添加$.isNode()的done逻辑

doyoman avatar May 25 '22 01:05 doyoman

done(val = {}) {
  const endTime = new Date().getTime()
  const costTime = (endTime - this.startTime) / 1000
  this.log('', `🔔${this.name}, 结束! 🕛 ${costTime} 秒`)
  this.log()
  if (this.isSurge() || this.isQuanX() || this.isLoon()) {
    $done(val)
  }
}

不管是哪个环境,都会执行输出日志的逻辑。

因为代理 App 需要在脚本执行完成后显式调用 $done() 来退出,所以才需要判断是否代理 App 环境 Node 环境下,代码执行完就结束了,并不需要通过调用什么函数来告诉其需要退出。

chavyleung avatar May 25 '22 02:05 chavyleung

因为我是想在nodejs脚本中执行一个判断,如果条件满足即$.done()中断脚本执行,否则继续执行,不是等到脚本执行完毕自行结束

doyoman avatar May 25 '22 05:05 doyoman

if ($.isNode()) {
  process.exit(1)
}

你是希望这样终止整个脚本对吧?

chavyleung avatar May 25 '22 05:05 chavyleung

是的,就是使用到了$.done()的话就是结束整个脚本

doyoman avatar May 25 '22 05:05 doyoman

另外nodeja上使用时got最新版12.0.4无法导入,11.8.3可以正常使用

doyoman avatar May 25 '22 06:05 doyoman

https://github.com/chavyleung/scripts/commit/bfe1e74aaf83c985a24911901c9948bad42813e1

feat(env.js): node 环境下 $.done() 会使用 process.exit(1) 退出脚本

chavyleung avatar May 25 '22 06:05 chavyleung

D141DD06-B9CF-4BBD-857D-722435DBA012 3F5D6FE0-91A3-4814-B96D-C0333C5424A3

我发现异步请求无法正确获取到body,是图一的地方返回resp里面不包含body,只有rawbody

doyoman avatar May 25 '22 07:05 doyoman

https://github.com/chavyleung/scripts/commit/7a86b697bc336c622ddb021d5eb6bfd3a7ec2b9f fix(env.js): 修复 $.http 在 node 环境下没有返回 resp.body 问题

chavyleung avatar May 25 '22 08:05 chavyleung