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

使用ModuleAliases配置Prisma别名时出现MODULE_NOT_FOUND错误

Prisma模块别名配置后编译报错问题

问题背景

我想为prisma.ts配置模块别名,用import prisma from '@prisma'替代相对路径导入,已完成如下配置:

tsconfig.json中的paths配置

"paths": {
    "@services/*": ["lib/services/*"],
    "@prisma": ["lib/db/prisma"]
},

package.json中的_moduleAliases配置

"_moduleAliases": {
    "@services": "dist/lib/services",
    "@prisma": "dist/lib/db/prisma"
},

问题现象

  • @services别名可正常工作,IDE也能识别@prisma别名
  • 编译后触发MODULE_NOT_FOUND错误,提示:

    Error when loading '/opt/bot/dist/listeners/api/match.js': Error: Cannot find module '/opt/bot/dist/lib/db/prisma/client'

  • 移除别名改用相对路径导入则可正常编译运行

问题原因

核心冲突在于别名命名和Prisma官方npm包重名:
你在lib/db/prisma.ts文件里大概率会导入官方的@prisma/client包,当Node.js解析别名时,会把@prisma/client错误地解析为基于你自定义@prisma别名的本地路径(即dist/lib/db/prisma/client),但实际上@prisma/client是独立的npm包,并非你的本地文件,因此出现找不到模块的错误。

解决方案

方案1:修改别名名称(推荐)

把自定义的@prisma别名改成不会和官方包冲突的名称,比如@db或@prisma-instance:

更新tsconfig.json:

"paths": {
    "@services/*": ["lib/services/*"],
    "@db": ["lib/db/prisma"]
},

更新package.json:

"_moduleAliases": {
    "@services": "dist/lib/services",
    "@db": "dist/lib/db/prisma"
},

导入时使用新别名:

import prisma from '@db'

方案2:保留原别名但添加精确映射(不推荐,易混淆)

如果一定要用@prisma作为别名,需要在配置里明确指定@prisma/client解析到npm包:

更新tsconfig.json:

"paths": {
    "@services/*": ["lib/services/*"],
    "@prisma": ["lib/db/prisma"],
    "@prisma/client": ["node_modules/@prisma/client"]
},

更新package.json:

"_moduleAliases": {
    "@services": "dist/lib/services",
    "@prisma": "dist/lib/db/prisma",
    "@prisma/client": "node_modules/@prisma/client"
},

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 05:58:13