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

Node.js中TypeScript编译后绝对路径模块找不到问题求助

Node.js TypeScript编译后绝对路径模块找不到的解决方案

问题描述

在Node.js环境下使用TypeScript开发,已在tsconfig.json中配置绝对路径,开发阶段导入'db'模块正常,但编译生成dist目录后,运行时出现Cannot find module 'db'错误,需要解决该问题以保证编译后仍可正常使用绝对路径。

相关配置与代码

tsconfig.json

{
  "extends": "@tsconfig/node16/tsconfig.json",
  "compilerOptions": {
    "preserveConstEnums": true,
    "baseUrl": "src",
    "rootDir": "src",
    "outDir": "dist"
  },
  "include": ["src/**/*.ts"],
  "exclude": ["node_modules", "**/*.spec.ts"]
}

src/index.ts

import express from "express";
import dotenv from "dotenv";
import connectDB from "db";

dotenv.config();
const app = express();

const PORT = process.env.PORT || 3001;
app.listen(PORT, () => console.log(`server run on port ${PORT}`));

connectDB(app, PORT);

编译后的dist/index.js

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const express_1 = __importDefault(require("express"));
const dotenv_1 = __importDefault(require("dotenv"));
const db_1 = __importDefault(require("db"));
dotenv_1.default.config();
const app = (0, express_1.default)();
const PORT = process.env.PORT || 3001;
app.listen(PORT, () => console.log(`server run on port ${PORT}`));
(0, db_1.default)(app, PORT);

解决方案

方法1:用tsconfig-paths在运行时识别绝对路径

TypeScript编译不会自动将绝对路径转为相对路径,tsconfig-paths可以让Node.js在运行时读取tsconfig.json的路径配置,识别绝对路径模块。

  • 安装依赖:
npm install tsconfig-paths --save-dev
  • 修改package.json的启动脚本:
{
  "scripts": {
    "start": "node -r tsconfig-paths/register dist/index.js"
  }
}

方法2:用tsc-alias在编译时转换路径

tsc-alias会在TypeScript编译完成后,自动将dist目录中文件的绝对路径替换为相对路径,让Node.js直接识别。

  • 安装依赖:
npm install tsc-alias --save-dev
  • 修改package.json的编译脚本:
{
  "scripts": {
    "build": "tsc && tsc-alias"
  }
}

方法3:通过package.json的exports字段配置模块映射

如果db模块对应src/db/index.ts,可在项目根目录的package.json中添加exports字段,直接映射模块路径:

{
  "exports": {
    "db": "./dist/db/index.js"
  }
}

注意:需保证编译后的db模块路径正确,模块结构变动时需同步更新该配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:50:13