You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery JavaScript UDF:解决h3-js库的import语句模块外使用错误

解决BigQuery中H3 JavaScript库的「Cannot use import statement outside module」错误

问题原因

你使用的h3core.js是ES模块格式,而BigQuery的JavaScript运行环境不支持ES模块的import语法,导致语法错误。

解决方案

方法一:使用预编译的UMD版本H3库

  1. 获取H3-JS的UMD预编译文件:从H3-JS的官方发布包中找到h3-js.umd.js(或类似命名的UMD/IIFE格式文件),不要直接使用源码库lib目录下的ES模块文件。
  2. 将该UMD文件上传到你的GCP存储桶(替换原有的h3core.js)。
  3. 修改BigQuery函数:UMD版本会将H3实例挂载到全局对象,因此调用时需要使用H3.xxx的形式,示例查询修改为:
CREATE TEMP FUNCTION latLngToCell(lat FLOAT64, lng FLOAT64, res INT64)
RETURNS STRING
LANGUAGE js
OPTIONS (library = 'gs://gcbucket/h3-js.umd.js')
AS r"""
return H3.latLngToCell(lat, lng, res);
""";

SELECT latLngToCell(37.38475, -122.34857, 7)

方法二:自行打包H3库为兼容格式

如果需要自定义打包:

  • 下载H3-JS源码,使用Rollup、Webpack等构建工具,将其打包为UMD或IIFE格式,确保所有依赖被整合,并且暴露全局H3对象。
  • 将打包后的文件上传到GCS存储桶,再按上述方式调用。

注意事项

  • 确保GCP存储桶的权限配置正确,BigQuery服务账号具备读取该文件的权限(可临时给文件添加allUsers读取权限测试,后续再收紧权限)。
  • 确认使用的H3版本包含你需要的latLngToCell函数。

内容的提问来源于stack exchange,提问作者Chad Harrison

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 23:43:33