在 firebase 云函数中执行时,以下命令返回美国格式而不是本地化格式。 但是,它在浏览器中运行良好。
price.toLocaleString("pt-BR", {
maximumFractionDigits: 2
});
toLocaleString() 有什么方法可以在 firebase 云函数中正常工作吗?
更新:
let price = 1456.21
let formattedPrice = price.toLocaleString("pt-BR", {maximumFractionDigits: 2});
//Value of formattedPrice expected: 1.456,21 (it works in browsers).
//Value of formattedPrice returned in Firebase Cloud Functions: 1,456.21
可能与 Node 的默认 ICU (--with-intl=small-icu) 有关。为了支持国际化,这个值似乎应该是 --with-intl=full-icu 。
https://nodejs.org/api/intl.html#intl_options_for_building_node_js
最佳答案
⚠️ intl 似乎不再有效/不受支持(最新版本是 4yo...)。
我已经实现了添加真正的 intl,如下所示:
- 在您的 Firebase 云函数上添加
full-icu
依赖项:npm install full-icu --save
- 编辑您在 console.cloud.google.com 上的功能(在成功部署后) (不要忘记选择正确的谷歌开发项目)
- 添加
NODE_ICU_DATA
环境变量,值为node_modules/full-icu
- 保存并等待 1 或 2 分钟以部署功能。
以后的更新不会删除这个环境,我能够成功地使用来自 Luxon 的 Intl api。
关于node.js - Firebase Cloud Function 中的本地化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49012433/