簡體   English   中英

類型錯誤:在 MVC 作業中運行節點種子時,Class 擴展值未定義不是構造函數或 null

[英]TypeError: Class extends value undefined is not a constructor or null when run node seeds in MVC homework

我正在研究 MVC 並使用 mysql 和種子數據庫我的種子文件夾有 index.js 和 users.js 這是種子/index.js 中的代碼:

const users = require('./users');
const { User } = require('./../models');

// create seeder function
const seeder = async () => {
// this will wipe out the user table
await User.destroy({ where: {}});
// this will insert all users at one
await User.bulkCreate(users);
process.exit(0); // stop the current node process that is running and exit, 0 mean no error happened, 1 mean an error happened
};

(async () => {
await seeder ();
})();

這是種子/users.js

module.exports = [
{
username: "captain fox 1",
password: 'password'
},
{
username: "captain fox 2",
password: 'password'
},
{
username: "captain fox 3",
password: 'password'
},

];

這是模型/User.js 中的代碼:

const { Models, DataTypes } = require('sequelize');
const sequelize = require('./../config/connection');

class User extends Models { }

User.init(
{
id: {
type: DataTypes.UUID,
primaryKey: true,
defaultValue: DataTypes.UUIDV4,
},
username: {
type: DataTypes.STRING,
allowNull: false,
validate: {
notNull: true,
}
},
password: {
type: DataTypes.STRING,
allowNull: false,
validate: {
notNull: true,
len: [6],
},
},

},

{
    sequelize,
    modelName: 'users',

}
);

module.exports = User;

這是我 server.js 中的代碼:

// Dependencies
const express = require('express');
const exphbs = require('express-handlebars');
const routes = require ('./controllers/homepageController');
// const path = require('path');

// Setting extra configuration that we might want to add for handlebars
const hbs = exphbs.create({});

// Set up Express App
const app = express();
const PORT = process.env.PORT || 3001;

// Setting up a basic express handlebars app by using the configuration when we declared "const hbs = exphbs.create({});"
app.engine('handlebars', hbs.engine);
// Express when we call res.render, we mean to use a handlebars template
app.set('view engine', 'handlebars');

// middlewares
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(routes);

// app.use(express.static(path.join(__dirname,'public')));
// app.use(require('.controllers/'))

// Start the server to begin listening
app.listen(PORT, () => {
console.log('Server listening on : http://localhost:' + PORT);
});

這是我的模型/index.js:

const User = require('./User');


module.exports = {
    User,
};

當我在根文件夾內的命令行中運行節點種子時,它顯示此錯誤:

C:\Users\blablabla\Documents\bootcamp\playground\practice\MVC_todos\models\User.js:6
class User extends Models { }
^

TypeError: Class extends value undefined is not a constructor or null
at Object. (C:\Users\blablabla\Documents\bootcamp\playground\practice\MVC_todos\models\User.js:6:20)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object. (C:\Users\blablabla\Documents\bootcamp\playground\practice\MVC_todos\models\index.js:1:14)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)

trtkh@DESKTOP-8T4104A MINGW64 ~/Documents/bootcamp/playground/practice/MVC_todos (main)
$ node seeds
C:\Users\blablabla\Documents\bootcamp\playground\practice\MVC_todos\models\User.js:6
class User extends Models { }
^

TypeError: Class extends value undefined is not a constructor or null
at Object. (C:\Users\blablabla\Documents\bootcamp\playground\practice\MVC_todos\models\User.js:6:20)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object. (C:\Users\blablabla\Documents\bootcamp\playground\practice\MVC_todos\models\index.js:1:14)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)

請幫助並解釋發生了什么! 非常感謝!!!

我認為你應該擴展Model class,而不是Models

const { Model, DataTypes } = require('sequelize');  //Model instead of Models
const sequelize = require('./../config/connection');

class User extends Model { }    //Model instead of Models

User.init(
{
id: {
type: DataTypes.UUID,
primaryKey: true,
defaultValue: DataTypes.UUIDV4,
},
username: {
type: DataTypes.STRING,
allowNull: false,
validate: {
notNull: true,
}
},
password: {
type: DataTypes.STRING,
allowNull: false,
validate: {
notNull: true,
len: [6],
},
},

},

{
    sequelize,
    modelName: 'users',

}
);

module.exports = User;

我認為您的模型導入有問題,請檢查一下。 也許您只需要導入不帶“s”的 Model。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM