TypeScript 编译后 ES 模块导入路径缺失 .js 后缀的解决方案-js教程

typescript 默认在 `module: “esnext”` 下移除导入路径中的 `.js` 后缀,导致 node.js esm 环境无法解析模块;需通过 `verbatimmodulesyntax: true`(推荐)或 `allowjs: true` 配合正确配置来保留扩展名。

在 TypeScript 5.0+ 中,allowJs: true 并不能真正解决 .js 后缀缺失问题——它仅允许 TS 编译器读取 .js 文件,但不会影响输出的 import 语句生成逻辑。官方文档也明确指出:allowJs 与模块路径重写无关。真正有效的方案是启用 verbatimModuleSyntax: true(自 TS 4.7 起引入),该选项强制 TypeScript 原样保留源码中 import/export 语句的路径字符串,包括 .js 扩展名。

✅ 正确解决方案:启用 verbatimModuleSyntax

更新你的 tsconfig.json,添加以下关键配置:

{
  "compilerOptions": {
    "rootDirs": ["src"],
    "outDir": "dist",
    "lib": ["es2020", "esnext.asynciterable"],
    "target": "es2020",
    "module": "esnext",
    "moduleResolution": "node",
    "esModuleInterop": true,
    "types": ["node"],
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "verbatimModuleSyntax": true   // ? 关键:保留原始 import 路径(含 .js)
  }
}

✅ 效果:
若你在 User.ts 中显式写为:

import { UserFavoriteRoom } from "./UserFavoriteRoom.js";
import { Room } from "./Room.js";

则编译后 User.js 将严格保持:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » TypeScript 编译后 ES 模块导入路径缺失 .js 后缀的解决方案-js教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4000801+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4000801+
  • 本周更新: 0+
  • 最后更新: 2026-03-16