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

使用npm link引入TypeScript模块无法获取函数/类问题排查

核心问题是你的TypeScript模块未正确编译为JavaScript,或模块的package.json配置未指向编译产物,导致JS项目无法识别模块导出。以下是具体解决步骤:

1. 修正TypeScript编译配置(tsconfig.json)

在TS模块根目录创建或修改tsconfig.json,确保包含关键配置:

{
  "compilerOptions": {
    "outDir": "./dist", // 指定编译后JS文件的输出目录
    "module": "CommonJS", // 编译为CommonJS模块,适配JS项目的require语法
    "target": "ES6", // 目标JS版本,可根据需求调整
    "declaration": true // 生成类型声明文件,可选但能提供自动补全支持
  },
  "include": ["src/**/*"], // 指定要编译的源码范围
  "exclude": ["node_modules"]
}

2. 配置模块的package.json

修改模块根目录的package.json,确保入口指向编译后的文件:

{
  "name": "module", // 模块名称,需与测试项目require的名称一致
  "main": "./dist/index.js", // 指向编译后的入口JS文件
  "types": "./dist/index.d.ts", // 可选,指向类型声明文件,支持编辑器自动补全
  "scripts": {
    "build": "tsc" // 添加编译命令,用于将TS转为JS
  }
}

3. 重新执行npm link流程

  • 先在TS模块目录执行:
    npm run build # 编译TS源码为JS产物
    npm link # 将模块链接到全局npm仓库
    
  • 再在测试JS项目目录执行:
    npm link module # 链接到本地的TS模块(此处的module是package.json中的name字段值)
    

4. 验证导出内容

在测试项目的index.js中先打印导出内容,排查是否正确导出:

const moduleExport = require("module");
console.log(moduleExport); // 查看实际导出的对象,确认A、B是否存在

若仍有问题,检查以下两点:

  • functionA/index.ts和functionB/index.ts是否正确导出了目标对象/类,例如:
    // functionA/index.ts
    export const A = {
      something: () => { /* 函数逻辑 */ }
    };
    
  • 确认dist目录已生成且包含正确的JS文件,无编译报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:02:13