javascript 环境变量类型脚本

brjng4g3  于 2023-02-07  发布在  Java
关注(0)|答案(3)|浏览(126)

假设我有一个代码块,我希望它只出现(或运行)在一个staging环境中,我在该环境中设置了一个环境变量(比如ENV ="staging"),那么TypeScript是否有办法在编译期间访问该变量?
示例:
if (Environment['ENV'] == 'staging') console.log('testing');
在上面的环境中,哪个代码会编译成(冗余但有效的)if ('staging' == 'staging') ...

0g0grzrc

0g0grzrc1#

不,这不可能。
如果您的TypeScript文件在Node中运行,您可以使用process.env,因为它是一个常规的Node API-但在这种情况下,环境变量是在运行时由您的编译文件访问的,而不是在编译时由TypeScript访问的。
如果你的TypeScript文件在浏览器中运行,那么就没有process.env,所以你甚至不能在运行时访问它。你可以在编译时用use a tool like Webpack把编译文件中对process.env变量的引用替换成它们各自的值--但这仍然不是TypeScript所做的。
所以很不幸答案是否定的:TypeScript无法做到这一点,您必须使用其他东西(如Webpack,甚至只是一个搜索和替换)将环境变量注入脚本。

ar7v8xwq

ar7v8xwq2#

TypeScript是否有办法在编译期间访问变量
是的。更喜欢使用process.env,它在节点中 * 按原样 * 工作,并且可以使用--define与webpack一起使用。

更多

显示如何将其用于生成输出切换的示例:https://basarat.gitbooks.io/typescript/content/docs/tips/build-toggles.html

nfg76nw0

nfg76nw03#

它在节点中工作。

npm install dotenv --save

使用.env创建文件。在其中键入Staging = "staging"
在您服务器/应用程序中将其称为:

require('dotenv').config();

在您代码中,可以像这样使用它:

if (process.env.Staging = "staging") //true
{ 
 foo(); 
}

相关问题