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

TypeScript编写ESM模块时,如何引用待编译的本地文件?

TypeScript 迁移 Lambda 到 ESM 的导入解决方案

不用在TS文件里引用还没生成的.js文件,TypeScript完全能处理这个逻辑,按下面的步骤来就行:

  • 配置TS编译选项
    先把tsconfig.json里的关键参数调好,适配Node.js的ESM规范:

    {
      "compilerOptions": {
        "module": "NodeNext", // 或ESNext,NodeNext更贴合Node.js的ESM解析逻辑
        "moduleResolution": "NodeNext",
        "target": "ES2020", // 匹配Lambda支持的Node.js版本
        "outDir": "./dist", // 指定编译后文件的输出目录
        "esModuleInterop": true
      }
    }
    
  • 保持TS原生导入方式
    在主TS文件里直接导入.ts文件即可,不用加.js后缀:

    import { fetchUrl } from './lib/fetch';
    

    TypeScript编译时会自动把这个路径转换成./lib/fetch.js,完美符合ESM的要求,不用手动修改。

  • 部署时注意路径处理
    编译后的文件都会输出到outDir指定的目录(比如dist),部署Lambda时只上传这个目录里的内容就行。如果用Serverless Framework或SAM这类工具,在配置里指定打包包含dist/**/*即可。

  • 额外的ESM标识配置
    项目根目录的package.json里必须添加"type": "module",告诉Node.js整个项目遵循ESM规范,避免运行时出现模块类型不兼容的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:36:33