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

如何编译TypeScript的.d.ts文件?模块引入SyntaxError报错求助

我来帮你搞定这个问题!这个错误本质上是因为你的TypeScript模块输出的类型定义文件(.d.ts)用了ES6的export语法,但你的Node.js环境默认期望的是CommonJS模块格式(也就是基于module.exports的写法)。下面是一步步的解决方案:

解决步骤

1. 修正tsconfig.json核心配置

首先得让TypeScript编译器生成和Node环境兼容的代码与类型定义,重点调整这几个配置项:

  • 把target设为ES5(兼容绝大多数Node版本)
  • 把module设为CommonJS(Node默认的模块系统)
  • 确保declaration为true(让TS自动生成.d.ts文件,**别手动写!**手动编写很容易出现语法不匹配问题)
  • 可选:用declarationDir指定类型定义的输出目录(比如./dist)

示例tsconfig.json片段:

{
  "compilerOptions": {
    "target": "ES5",
    "module": "CommonJS",
    "declaration": true,
    "declarationDir": "./dist",
    "outDir": "./dist",
    "strict": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "dist"]
}

2. 配置package.json的入口字段

确保你的模块包能被正确识别,在package.json里补充这几个关键字段:

  • main:指向编译后的CommonJS入口文件(比如./dist/index.js)
  • types:对应指向自动生成的类型定义文件(比如./dist/index.d.ts)
  • 如果需要同时支持ES模块和CommonJS,可以添加exports字段明确不同环境的入口:

示例package.json片段:

{
  "name": "your-module-name",
  "version": "1.0.0",
  "main": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "exports": {
    ".": {
      "require": "./dist/index.js",
      "import": "./dist/index.esm.js"
    }
  },
  "scripts": {
    "build": "tsc"
  }
}

3. 别手动写.d.ts(除非真的必要)

你提到的index.d.ts里的export * from './logger'是ES6语法,如果是手动编写的,很容易和编译后的JS模块格式不兼容。建议完全依赖TS自动生成类型定义,它会根据你设置的module配置自动生成兼容的导出语法(比如CommonJS环境下会生成export =这类兼容写法)。

如果确实需要手动编写类型定义,要确保语法和模块格式匹配,比如CommonJS环境下可以这么写:

// index.d.ts
import * as logger from './logger';
export = logger;

4. 验证修复效果

重新编译你的模块(执行npm run build),然后通过npm link本地链接到测试项目,或者发布后安装到目标项目,验证导入时是否还会出现语法错误。如果测试项目也是TS项目,确保它的tsconfig.json里moduleResolution设为Node或NodeNext,这样能正确解析类型定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:28:53