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

NextJS从public目录导入globe.json失败的原因及性能影响咨询

问题解答

1. 为什么public文件夹的JSON导入失败?

像React、Next.js这类用Webpack打包的项目里,import语句是用来加载源码模块的,打包工具只会扫描src/这类源码目录,以及你配置的别名路径(比如你用的@/就指向src/),而public/是专门放静态资源的目录,不在模块扫描范围内。

你写import countries from '/globe.json'时,打包工具会从项目根路径找这个文件,但不会去public/里搜,所以才会提示找不到模块。

如果要用上public里的JSON,别用import,改成静态资源请求就行:

// 在组件里异步获取
async function getCountries() {
  const response = await fetch('/globe.json');
  const countries = await response.json();
  return countries;
}

2. JSON文件放不同目录的性能影响

放在src/目录下(比如你成功导入的src/lib/test.json)

  • 好处:
    • 会被打包工具处理,能做树摇优化(如果只用到JSON里的部分内容,没用的会被删掉)
    • 直接嵌进JS打包文件里,不用额外发请求,获取速度快
  • 坏处:
    • 要是JSON体积大,会把JS打包文件撑得很大,拖慢首屏加载速度

放在public/目录下

  • 好处:
    • 不会被放进JS打包文件,能保持打包文件体积小,首屏加载更快
    • 静态资源可以用CDN缓存,用户后续访问速度会更快
  • 坏处:
    • 得额外发一次HTTP请求去拿JSON,首次加载时多了一层网络开销
    • 没法被打包工具优化,比如JSON里有冗余内容的话,没法自动精简

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:28:23