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

使用moduleResolution NodeNext时,如何阻止TypeScript解析同名文件?

NodeNext模块解析下,避免本地同名文件覆盖npm包导入的方法

当配置moduleResolution: "nodenext"时,若当前目录存在zod.ts,裸模块导入语句export { z } from 'zod'会被转译为相对路径export { z } from './zod';——这是因为TypeScript的nodenext策略会优先查找本地同名文件/目录,而非直接去node_modules匹配npm包。要让原导入语句保持原样,可通过以下方法解决:

方法一:配置moduleSuffixes

在tsconfig.json的compilerOptions中添加moduleSuffixes,指定TypeScript先尝试无后缀的npm包解析,再查找本地带后缀的文件:

{
  "compilerOptions": {
    "moduleResolution": "nodenext",
    "moduleSuffixes": [".js", ".ts"]
  }
}

方法二:用package.json的exports区分模块

在包含本地zod.ts的目录下创建package.json,通过exports明确本地模块的访问路径,避免和npm包名冲突:

{
  "name": "local-modules",
  "exports": {
    "./zod": "./zod.ts"
  }
}

之后导入本地文件需用import { ... } from 'local-modules/zod',而import { z } from 'zod'会正常指向npm包。

方法三:重命名本地文件

直接将本地的zod.ts改名为其他名称(如app-zod.ts),从根源上避免命名冲突,是最简单直接的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 00:47:06