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

Laravel Mix与Webpack加载JSON文件失败:Webpack自动添加.js后缀

解决Webpack导入JSON文件时匹配错误的问题

你遇到的这个问题,核心是Webpack的文件后缀解析逻辑在搞鬼——它明明该找vehicles.json,却跑去搜vehicles.json.js,这大概率和Webpack的resolve.extensions配置脱不了干系。

问题根源

Webpack的resolve.extensions选项,决定了它会自动给导入路径补全哪些后缀。如果你的配置满足这两个条件之一,就会触发这个错误:

  • 配置里压根没包含.json后缀,Webpack只会默认尝试.js这类常见后缀;
  • .js后缀排在.json前面,Webpack会优先给你的导入路径加上.js,把vehicles.json变成vehicles.json.js,自然找不到文件。

具体解决方案

1. 修正Webpack的后缀解析配置

打开你的Webpack配置文件(一般是webpack.config.js),找到resolve配置项,确保.json被加入extensions数组,而且建议把它放在靠前的位置,避免优先匹配错误后缀:

module.exports = {
  // ...其他项目配置
  resolve: {
    extensions: ['.json', '.js', '.jsx'] // 可根据你的项目需求调整其他后缀
  }
};

要是你用的是Webpack 5,它默认支持JSON文件导入,但如果手动覆盖了resolve.extensions,就必须显式加上.json,否则Webpack会直接忽略这个后缀的文件。

2. 临时替代方案:转成JS模块

如果暂时不想改Webpack配置,也可以把vehicles.json改名为vehicles.js,然后在文件里直接导出JSON对象:

// vehicles.js
export default {
  // 原JSON文件里的所有内容
};

之后导入时可以写成:

import vehicleTypes from '../data/vehicles';

Webpack会自动匹配.js后缀,这样也能正常工作,但这只是临时 workaround,更推荐从配置层面彻底解决问题。

额外提醒

确认文件路径完全正确——你已经确认文件名是vehicles.json,所以重点还是放在Webpack的后缀解析配置上。修改配置后记得重启Webpack开发服务器,确保新配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:38:27