如何在PureScript中指定退出码?非异常方式实现报错退出
如何在PureScript中指定进程退出码
好问题!你遇到的情况很典型:直接让main返回Int并不会改变进程的退出码,因为PureScript默认的运行时不会把这个返回值映射到Node.js的进程退出状态上。要在不抛出异常的情况下让程序以指定错误码退出,你需要借助Node.js的API来实现。
解决方案步骤:
添加依赖包:首先需要引入
node-process包,它提供了访问Node.jsprocess模块的PureScript绑定。在项目目录下运行:pulp add node-process修改你的代码:导入
exit函数并在main中调用它来指定退出码。这里我们用最新的Effect类型(PureScript 0.15+推荐使用,替代旧的Eff):module Main where import Effect (Effect) import Effect.Console (log) import Node.Process (exit) main :: Effect Unit main = do log "Hello sailor!" exit 137 -- 这里指定你想要的退出码
为什么原来的代码不生效?
你之前的main返回Int,但这个值只是Eff计算的结果,pulp的运行时并不会把它传递给Node.js的process.exit()方法——所以进程默认会以状态码0退出。而exit函数则直接调用了Node.js的原生API,能直接控制进程的退出状态,而且不会触发异常。
内容的提问来源于stack exchange,提问作者Hernan Rajchert
相关产品推荐
相关产品推荐

