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

从CommonJS转ES模块后import映射报错Directory import not supported

问题原因与解决方法

你的错误源于import mappings的路径配置格式错误,原生ES模块的import mappings是严格的字符串替换逻辑,和module-alias的自动补全行为存在差异:

问题分析

你当前的package.json配置中,#http/*映射到./http/,当执行import APIClient from '#http/apiClient';时,会被替换为./http/apiClient/——这是一个目录路径,而Node.js ES模块默认不支持直接导入目录(除非目录包含index.js或配置了package.json的exports字段)。而module-alias会自动尝试查找目录下的入口文件(比如index.js),所以之前能正常工作。

解决方案

1. 修正imports路径配置

将映射路径的结尾斜杠改为*,让替换后的路径指向具体文件而非目录:

{
  "imports": {
    "#http/*": "./http/*",
    "#cloud/*": "./cloud/*",
    "#constants": "./constants"
  }
}

这样#http/apiClient会被替换为./http/apiClient,Node.js会自动尝试查找对应的文件(比如apiClient.js、apiClient.mjs等),和你之前用module-alias的行为一致。

2. 确保项目已启用ES模块

确认你的package.json中已经添加了"type": "module"字段,否则Node.js会默认按CommonJS解析,也会导致import mappings失效:

{
  "type": "module",
  "imports": {
    // ... 你的映射配置
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:49:54