解决Sequelize包'./types'子路径未在exports中定义的报错问题
解决Sequelize报错:Package subpath './types' is not defined by "exports"
问题根源
报错的核心原因是你在User.model.ts中使用了错误的模块导入路径:
import { DataTypes, Model, Optional } from "sequelize/types";
Sequelize v6及以上版本的package.json里,exports字段并未声明./types这个子路径,Node.js的模块解析机制无法识别该路径,因此触发报错。
解决方案
1. 修正导入语句
将User.model.ts中的导入代码改为直接从sequelize包导入所需内容:
import { DataTypes, Model, Optional } from "sequelize";
Sequelize v6+本身内置了完整的TypeScript类型定义,不需要从sequelize/types单独导入。
2. 确认依赖版本
- 检查当前
sequelize版本:
如果版本低于v6,执行升级:npm list sequelizenpm install sequelize@latest - 无需额外安装
@types/sequelize,v6+自带的类型定义已经足够,重复安装反而可能引发类型冲突。
3. 验证修复
修改完成后重启Express服务,调用/api/users接口,User.create()方法即可正常执行,不会再出现该报错。
补充提示
如果项目中其他文件也存在sequelize/types的导入路径,需要同步修改为直接从sequelize导入,避免重复触发相同问题。
内容的提问来源于stack exchange,提问作者ruslanonly
相关产品推荐
相关产品推荐

