问题
nodemon server.js
[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node server.js`
Warning: connect.session() MemoryStore is not
designed for a production environment, as it will leak
memory, and will not scale past a single process.
(node:11528) Warning: Accessing non-existent property 'sequelize' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
Server running at port: 8000
网站可以正常运行。 但我该如何解决呢?
ps。每次运行时的数字都是唯一的。 -->(节点:11528)
其他问题
当我使用-->“node --trace-warnings续集”时
PS C:\Users\company\Desktop\Project> node --trace-warnings sequelize
node:internal/modules/cjs/loader:936
throw err;
^
Error: Cannot find module 'C:\Users\company\Desktop\Project\sequelize'
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
当我使用-->“nodemon -e js,ejs index.js”时
[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,ejs
[nodemon] starting `node index.js index.js`
node:internal/modules/cjs/loader:936
throw err;
^
Error: Cannot find module 'C:\Users\company\Desktop\Project\index.js'
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
[nodemon] app crashed - waiting for file changes before starting...
“node --trace-warningssequelize”和“nodemon -e js,ejs index.js”:网站无法正常运行。但我该如何解决呢?
节点:v16.13.1 续集:v6.12.4 节点蒙:v2.0.15 数据库:mySQL
代码server.js
require('dotenv').config()
const express = require('express')
const app = express()
const appRoutes = require('./routes')
const { sequelize } = require("./models")
const appSchedule = require("./schedules")
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const session = require('express-session');
const passport = require('passport');
app.use(cookieParser("secret"));
//config session
app.use(session({
secret: 'secret',
resave: true,
saveUninitialized: false,
cookie: {
maxAge: 1000 * 60 * 60 * 24 // 86400000 = 1 day
}
}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
//Config passport middleware
app.use(passport.initialize());
app.use(passport.session());
sequelize.sync().then(() => {
// static resources
app.use(`/public/`, express.static('public'))
// ejs view
app.set('views', 'views')
app.set('view engine', 'ejs')
// app route
app.use(express.json())
app.use(express.urlencoded({
extended: true
}))
app.use(`/`, appRoutes)
// start schedule
appSchedule.start()
// listen connection
app.listen(process.env.PORT, () => {
console.log(`Server running at port: ${process.env.PORT}`)
})
}).catch((error) => {
console.error(error)
})
这是第一个问题。如果有任何错误,我在此表示歉意。
谢谢。
有几个问题
--trace-warnings
时,您将指向一个不存在的文件。您需要在同一个文件上运行它,例如node --trace-warnings server.js
。nodemon -e js,ejs server.js
看看输出是什么sequelize
未从此文件中导出。也许您的意思是const sequelize = require('./models')
?您必须包含 ./models
中的代码才能确定const { sequelize } = require("./models")
我发现这种安排对错误没有影响,当我在另一个文件中调用该函数时,我调整了Javascript解构,它神奇地解决了问题。
我改变了server.js的顶部
来自:
const { sequelize } = require("./models")
至:
const model = require("./models")
在你想要调用该函数的地方,你可以这样做:
model.sequelize.sync().then(() => {
这解决了我的问题
nodejs 中禁止循环依赖
就我而言,实际发生的情况是我的控制器包含我为了可重用性而创建的函数,然后我开始在名为 helpers 的文件中创建此类函数......后来我从helpers 文件,但有一个函数我从我的控制器导入到我的助手文件...这导致了循环依赖...简而言之,我的控制器正在使用来自助手的函数,而助手正在使用来自我的控制器的函数。
什么对我有用?
我刚刚将辅助函数从控制器移至辅助文件,它解决了问题...