GCP Dataform项目引入luxon时遇Intl is not defined错误求解决
解决Dataform中使用luxon遇Intl未定义的问题
问题原因
Dataform运行环境未内置ECMAScript的Intl国际化API,而luxon的toFormat方法依赖该API,导致编译时抛出Intl is not defined错误。
解决方案
方案一:改用原生JavaScript实现日期格式化
不需要依赖任何外部包,直接通过原生Date对象生成所需的日期后缀:
function getYesterdaySuffix() { const date = new Date(); date.setDate(date.getDate() - 1); const year = date.getUTCFullYear(); const month = String(date.getUTCMonth() + 1).padStart(2, '0'); const day = String(date.getUTCDate()).padStart(2, '0'); return `${year}${month}${day}`; } const TABLE_SHARDING_YESTERDAY_SUFFIX = getYesterdaySuffix(); module.exports = { TABLE_SHARDING_YESTERDAY_SUFFIX }
方案二:保留luxon但规避Intl依赖
如果必须使用luxon,可直接获取日期的年、月、日数值,手动拼接格式,避开依赖Intl的toFormat方法:
const { DateTime } = require('luxon') const yesterday = DateTime.utc().minus({ days: 1 }); const TABLE_SHARDING_YESTERDAY_SUFFIX = `${yesterday.year}${String(yesterday.month).padStart(2, '0')}${String(yesterday.day).padStart(2, '0')}`; module.exports = { TABLE_SHARDING_YESTERDAY_SUFFIX }
内容的提问来源于stack exchange,提问作者Lvi
相关产品推荐
相关产品推荐

