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

使用Typescript与NodeJS时无法从tsconfig配置的绝对路径导入模块

问题根因

tsconfig.json中配置的paths仅作用于TypeScript的编译期类型检查,不会修改编译后JS代码的导入路径,运行时(Node、浏览器)本身不识别该别名配置,需要对应你的运行/构建工具额外做适配。


1. 基础配置校验

先确认你的项目目录结构和tsconfig配置匹配,当前配置要求目录结构如下:

<项目根目录>
├── tsconfig.json
└── src/
    └── model/
        └── User.ts

如果结构符合,TS编译期的路径解析配置是正确的。

2. 不同场景的适配配置

  • 用ts-node直接运行TS文件:
    安装依赖npm i -D tsconfig-paths,运行时添加参数:
    ts-node -r tsconfig-paths/register src/入口文件.ts
    
    也可以在tsconfig.json中添加如下配置,之后直接运行ts-node即可:
    {
      // ...其他原有配置
      "ts-node": {
        "require": ["tsconfig-paths/register"]
      }
    }
    
  • 用Vite构建:
    安装依赖npm i -D vite-tsconfig-paths,修改vite.config.ts:
    import { defineConfig } from 'vite'
    import tsconfigPaths from 'vite-tsconfig-paths'
    
    export default defineConfig({
      plugins: [tsconfigPaths()]
    })
    
  • 用Webpack构建:
    修改webpack.config.js的resolve配置:
    const path = require('path')
    module.exports = {
      // ...其他原有配置
      resolve: {
        alias: {
          'model': path.resolve(__dirname, 'src/model')
        },
        extensions: ['.ts', '.js']
      }
    }
    
  • 用Rollup构建:
    安装依赖npm i -D @rollup/plugin-alias,修改rollup.config.js:
    import alias from '@rollup/plugin-alias';
    import path from 'path';
    
    export default {
      // ...其他原有配置
      plugins: [
        alias({
          entries: [
            { find: 'model', replacement: path.resolve(__dirname, 'src/model') }
          ]
        })
      ]
    };
    

其他排查项

  • 若项目存在多级tsconfig继承(如tsconfig.app.json、tsconfig.node.json),确认paths配置已被正确继承到生效的配置文件中
  • 先测试用相对路径导入UserModel是否正常,排除导出语法错误、文件路径写错的问题
  • 若运行的是打包后的JS产物,确认构建过程已将别名转换为实际相对路径,Node原生不支持识别TS路径别名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:45:02