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

Angular+Webpack环境下D3 v7无法解析JSON文件导入的问题

解决d3-format v7导入本地化JSON文件的Webpack构建错误

问题背景

基于Webpack的Angular项目,从d3-format v5升级到v7后,原导入语句:

import d3Format from "d3-format/locale/en-US.json";

出现构建错误:

Module not found: Error: Can't resolve 'd3-format/locale/en-US.json'

原因是d3-format v7的package.json新增了exports字段,定义了包内路径的映射规则,Webpack解析时会优先遵循这个配置,导致带.json后缀的导入路径不匹配。

解决方案

方案1:修正导入路径(推荐)

按照d3-format v7的exports配置规则,去掉导入路径中的.json后缀:

import d3Format from "d3-format/locale/en-US";

exports里的"./locale/*": "./locale/*.json"会自动将这个路径映射到对应目录下的JSON文件,既符合包的规范,又无需额外配置。

方案2:给Webpack添加路径别名(适配低版本Webpack)

如果你的Webpack版本低于5(对package exports支持不完善),可以在webpack.config.js中添加别名配置,强制Webpack解析到正确的目录:

const path = require('path');

module.exports = {
  // ...其他项目配置
  resolve: {
    alias: {
      "d3-format/locale": path.resolve(__dirname, "node_modules/d3-format/locale")
    }
  }
};

配置后原有的带.json后缀的导入语句即可正常工作。

方案3:升级Webpack到5+

Webpack 5原生支持ECMAScript模块的条件导出(exports字段),升级到Webpack 5后,只要导入路径符合exports的规则(比如方案1的写法),就能正常解析,无需额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:30:56