使用动态javascript变量名称访问“变量”环境变量

Mat*_*ieu 1 javascript node.js webpack

我有一个问题。在我的主机/云解决方案中,我必须使用“在其“环境变量”中定义的”方式为每个国家/地区使用定价环境变量。

BASIC_PRICE_FR_PRODUCT = "50";
COMPLEX_PRICE_FR_PRODUCT = 100;

BASIC_PRICE_UK_PRODUCT = "37";
COMPLEX_PRICE_UK_PRODUCT = "200";

BASIC_PRICE_ES_PRODUCT = "75";
COMPLEX_PRICE_ES_PRODUCT = "300";
Run Code Online (Sandbox Code Playgroud)

我可以使用process.env.XXX访问这些文件,例如 process.env.BASIC_PRICE_FR

如您所见,这些环境变量取决于国家/地区,因为一个国家/地区与另一个国家/地区的价格不同。

在我们的node.js应用程序中,挑战在于,执行一个函数时,它会自动了解所在国家/地区,因此,我们可以(并且必须)使用“当前”国家/地区和当前country_iso_code(例如“ fr”),为此,我们必须使用与该国家/地区匹配的定价。

在阅读了关于“动态变量名称”的一些文章之后,我尝试了eval,global []和window [],如下所示,但是没有任何作用,并且所有输出都为“ undefined”值

//note: iso_code_3166_we_can_use is something passed to the function by the final user or by some other lambda in the function context.
const current_country_iso_code_uppercase = iso_code_3166_we_can_use;
const basicPrice   = parseInt( "process.env.BASIC_PRICE_" + current_country_iso_code_uppercase + "_PRODUCT")
console.log(basicPrice)//bug here as outputs "undefined"
Run Code Online (Sandbox Code Playgroud)

编辑

使用process.env ['xxx']的建议无效,因此我在此处添加了结果

console.log(process.env.BASIC_PRICE_FR_PRODUCT);//outputs 50
console.log('BASIC_PRICE_' + iso_code_uppercase + '_PRODUCT' );//just to be sure :): outputs BASIC_PRICE_FR_PRODUCT
console.log( process.env['BASIC_PRICE_' + iso_code_uppercase + '_PRODUCT'] );// DOES NOT WORK, outputs undefined
Run Code Online (Sandbox Code Playgroud)

d3L*_*d3L 5

使用[]动态访问一个对象的属性:

var country = 'FR'
var price   = process.env['BASIC_PRICE_' + country + '_PRODUCT']
Run Code Online (Sandbox Code Playgroud)

  • 尝试但没有奏效。我在我的问题编辑中添加了它输出的内容 (2认同)