React-Simple-Maps在Next.js项目中无法加载/public目录下本地TopoJSON文件的问题求助
React-Simple-Maps在Next.js项目中无法加载/public目录下本地TopoJSON文件的问题求助
我最近在Next.js项目里用react-simple-maps做一个简单的全球地图,之前这么实现过完全没问题,但这次却卡在了加载/public目录下的TopoJSON文件作为<Geographies/>数据源这一步。
根据react-simple-maps的官方说明,我应该可以直接引用/public里的TopoJSON或GeoJSON文件。下面是我写的最简测试代码:
'use client'; import { ComposableMap, Geography, Geographies } from 'react-simple-maps'; export const MapChart = () => { return ( <ComposableMap className='col-span-3' projection="geoEqualEarth"> <Geographies geography="/topo.json"> {( {geographies} ) => geographies.map((geo) => { return ( <Geography key={geo.rsmKey} geography={geo} onClick={() => console.log(geo.properties.name)} /> )})} </Geographies> </ComposableMap> ); };
我特意确认过,topo.json文件确实存在:浏览器里能直接访问到这个文件,项目的/public文件夹里也能看到它。
我翻了react-simple-maps的源码,发现它会把传给geography属性的字符串当成URL,自动调用fetch()去请求。而且之前也看到不少资料说,fetch()是可以请求/public目录下的资源的,但到我这里就不行了。我现在有点懵:难道这种方式只能在服务端用?但公共资源默认不应该是客户端就能访问的吗?比如项目里的logo,在服务端组件里就能正常加载,完全没毛病。
目前收到的错误提示是“col 1 pos 1有意外字符”,我推测这是因为fetch()请求失败后,错误响应被当成JSON解析导致的。
有没有大佬能指点下:要么怎么让/public里的TopoJSON文件正常被Geographies加载,要么怎么用topojson-client来处理这个问题?
我的依赖版本:
- react-simple-maps: 3.0.0
- react: 19.1.0
- nextjs: 15.4.4
内容来源于stack exchange
相关产品推荐
相关产品推荐

