首页 > 解决方案 > toLocaleString 不适用于 firebase cloudFunctions

问题描述

我在 Firebase Cloud Functions 上托管的节点 8 功能未按预期工作。我有一个toLocaleString调用将所有参数传递给巴西货币格式,但我得到了默认EN格式。

功能:

const value = 10825.20645
const formatted = value.toLocaleString('pt-br', { 
    style: 'currency', 
    currency: 'BRL', 
    decimals: 2 
})

预期结果

CloudFunction 的实际结果

在浏览器上运行相同的功能工作正常

const value = 10825.20645
const formatted = value.toLocaleString('pt-br', { 
    style: 'currency', 
    currency: 'BRL', 
    decimals: 2 
})
  
console.log(formatted) // R$ 10.825,21

标签: javascriptfirebasegoogle-cloud-functions

解决方案


为了解决这个问题(部分,我会解释),我按照@hybrdthry911 的建议使用了INTL API 。默认情况下,nodejs 只加载 EN 语言。

const intl = require('intl')
const locale = intl.NumberFormat('pt-br', { 
    style: 'currency', 
    currency: 'BRL', 
    decimals: 2 
})
const value = 10825.20645
const formatted = locale.format(value)
console.log(formatted) // R$10.825,21

但是,它仍然与我的预期结果不同。在浏览器中,货币符号后有一个空格,但使用的是 INTL。

  • 预期的:R$ 10.825,21
  • 结果:R$10.825,21

小问题,我去搜一下。


推荐阅读