我有错误:包子路径'./types'不是由与sequelize包连接的“导出”定义的。 (错误:包子路径“./types”未由 D:\Projects\pets\realtime-chat\backend\node_modules\sequelize\package.json 中的“exports”定义)。
尝试解决将所有npm和node版本更新到最新版本的问题,但不成功。我已经为我的应用程序设置了带有 socket.io 的 Express 服务器,并使用 TypeScript 创建了带有 Sequelize 的用户模型。
当我尝试使用 User.create({\attributes}) 创建新用户时,它会抛出上面提到的错误。
server.ts
import express from "express"
import { createServer } from "http"
import { Server } from "socket.io";
import apiRouter from "./routes/api.route";
import { seq } from "./models/db"
const app = express();
app.use("/api", apiRouter);
const httpServer = createServer(app);
const io = new Server(httpServer);
io.on("connection", (socket) => {
console.log(socket.id);
});
httpServer.listen(process.env.PORT || 5000, () => {
console.log(seq.config);
seq.authenticate();
console.log("Server is started")
});
User.model.ts
import { DataTypes, Model, Optional } from "sequelize/types";
import { seq } from "./db";
interface UserAttributes {
username: string,
password: string,
email: string
}
type UserCreationAttributes = Optional<UserAttributes, "email">;
class User extends Model<UserAttributes, UserCreationAttributes> {
declare username: string;
declare password: string;
declare email: string
}
User.init({
username: {
type: DataTypes.STRING,
},
password: {
type: DataTypes.STRING
},
email: {
type: DataTypes.STRING
}
},
{
sequelize: seq,
tableName: "users"
});
export default User;
我的 api.route.ts
import express from "express"
import User from "../models/User";
const router = express.Router();
router.get("/users", async () => {
await User.create({
password: "name",
username: "name"
})
});
export default router;
最佳答案
只需直接从 sequelize
导入所有这些类型:
import { DataTypes, Model, Optional } from "sequelize";
关于node.js - 如何解决sequelize ./types pakage的问题。错误: Package subpath './types' is not defined by "exports" sequalize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73181297/