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

Svelte加载GeoJSON报Parse failure Unexpected token (1:7)错误

错误原因说明
  • 报错Parse failure: Unexpected token (1:7)是项目构建工具(Svelte项目通常基于Vite/Rollup)抛出的模块解析错误:构建工具默认将.geojson后缀文件当做JavaScript脚本解析,但GeoJSON本质是纯JSON格式文本,内容开头为{"type": "FeatureCollection"...},不符合JavaScript语法规则,解析到第1行第7个字符时因语法不匹配中断。
  • 你生成的GeoJSON文件本身格式没有问题,在JSFiddle环境能正常运行,是因为JSFiddle中不存在构建环节对.geojson文件的模块解析流程:要么是直接将GeoJSON内容赋值给JS变量,要么是通过网络请求拿到已解析完成的JavaScript对象,Mapbox可以直接读取使用,自然不会报错。
  • 问题核心是Svelte项目默认没有配置.geojson格式文件的解析规则,构建工具无法识别该后缀文件应该按JSON格式解析为可直接使用的JS对象,而非当做JS脚本执行。
修复方案

以下三种方案任选其一即可,不需要修改你原有的CSV转GeoJSON的脚本逻辑:

  • 方案1(最简便,零配置):将生成的organizations.geojson文件重命名为organizations.json,同时修改导入语句为import geoData from "$data/organizations.json"。Svelte/Vite内置了.json后缀文件的解析规则,会自动将JSON内容转换为JS对象导入,可直接传给Mapbox使用。
  • 方案2(保留.geojson后缀,零配置修改):导入时显式指定解析规则,强制构建工具按JSON格式处理文件,修改导入语句为:
import geoData from "$data/organizations.geojson?json"
  • 方案3(运行时异步加载):将GeoJSON文件放到项目的静态资源目录(通常是static文件夹),不做构建时导入,在地图加载完成后通过请求拉取解析:
map.on('load', async () => {
  const res = await fetch('/organizations.geojson');
  const geoData = await res.json();
  map.addSource('earthquakes', {
    type: 'geojson',
    data: geoData,
    cluster: true,
    clusterMaxZoom: 14,
    clusterRadius: 50
  });
  // 后续图层添加逻辑
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:12:28