【发布时间】:2022-04-28 16:21:32
【问题描述】:
我是 Web 开发的初学者,正在尝试使用 Mysql Express React Node js 创建一个全栈项目。 在将 Sequalize 与 node js 一起使用时遇到此 TypeError 问题。 我是新手,我无法理解这个问题。有人可以向我解释一下并帮助我找到解决方案吗? (PS:如果你们需要任何其他文件,请告诉我)
服务器 js
const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");
const app = express();
var corsOptions = {
origin: "http://localhost:8081"
};
app.use(cors(corsOptions));
// parse requests of content-type - application/json
app.use(bodyParser.json());
// parse requests of content-type - application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));
const db = require("./models");
db.sequelize.sync({ force: true }).then(() => {
console.log("Drop and re-sync db.");
});
// simple route
app.get("/", (req, res) => {
res.json({ message: "Welcome." });
});
require("./src/routes/routes")(app);
// set port, listen for requests
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}.`);
});
索引 js
const dbConfig = require("../config/db.config.js");
const Sequelize = require("sequelize");
const sequelize = new Sequelize(dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, {
host: dbConfig.HOST,
dialect: dbConfig.dialect,
operatorsAliases: false,
pool: {
max: dbConfig.pool.max,
min: dbConfig.pool.min,
acquire: dbConfig.pool.acquire,
idle: dbConfig.pool.idle
}
});
const db = {};
db.Sequelize = Sequelize;
db.sequelize = sequelize;
db.devices = require("./devices.js")(sequelize, Sequelize);
module.exports = db;
设备 js
module.exports = (sequelize, Sequelize) => {
const Device = sequelize.define("devices", {
serialno: {
type: Sequelize.INTEGER
},
brand: {
type: Sequelize.STRING
},
modelname: {
type: Sequelize.STRING
}
});
return Device;
};
错误
db.devices = require("./devices.js")(sequelize, Sequelize);
^
TypeError: require(...) is not a function
at Object.<anonymous> (C:\Users\theta\Documents\project\src\models\index.js:22:37)
at Module._compile (internal/modules/cjs/loader.js:1138:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
at Module.require (internal/modules/cjs/loader.js:1026:19)
at require (internal/modules/cjs/helpers.js:72:18)
at Object.<anonymous> (C:\Users\theta\Documents\project\src\server.js:19:12)
at Module._compile (internal/modules/cjs/loader.js:1138:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
【问题讨论】:
-
该错误表明您没有将函数作为
devices.js的导出返回,而是按原样使用它。请同时显示devices.js。您可以点击edit 为您的问题添加详细信息。 -
@cbr 我添加了 device.js 文件
-
是否有多个名为
devices.js的文件? index.js文件和devices.js文件在同一个目录吗? -
@cbr 不,只有一个 devices.js 文件,是的,它们都在同一个文件夹中
-
老实说,我当时看不到问题所在。你确定你在修改后保存了文件吗?并重启
node?
标签: mysql node.js reactjs express sequelize.js