Nim如何检查环境是否在生产中?



在Nim中是否有标记生产环境的约定?
例如JavaScript中的process.env.NODE_ENV === 'production'
或者我应该使用像

这样的pragma
when defined(release):

when defined(release)行仅在编译时检查是否正在构建发布/非发布二进制文件,这是通过使用-d:release开关编译源代码获得的编译时符号。因此,这并没有告诉您任何关于运行时环境的信息,而是关于编译的信息。你可以编译调试/发布二进制文件,并在生产中使用它们,也许因为你有崩溃,需要用调试版本替换发布二进制文件,以获得有意义的堆栈跟踪/解释。

这些编译时符号通常通过使用外部脚本/构建机制嵌入,如NimScript、Nimble、nake,或者只是一个简单的.bat/.sh文件。

process.env.NODE_ENV === 'production'这样的一行可能来自某个地方,无论是项目中的静态文件还是其他东西。您需要弄清楚在生产环境中是什么定义了您的运行时环境,并添加检测这种差异所需的Nim代码。例如,您的Nim程序可以在启动时对您拥有的服务器运行GET JSON查询,并在某处解析isProduction: true值。该服务器可以在配置文件中参数化,最终用户指定他们实际运行的环境(或者只是避免使用服务器并读取本地配置文件)。

或者,如果您喜欢编译时间符号,您可以有一个shell脚本,通过使用用户定义的pragmas(然后您需要注意在适用的情况下使用适当的二进制文件),为您想要的许多不同环境构建N次二进制文件。

最新更新