Javascript “我该如何解决?”;TypeError:req.next不是一个函数";错误?
我正在做一个项目,我不断地遇到这个错误,我试着修复它,但我不能?我理解它,但不知道如何修复它 以下是错误:Javascript “我该如何解决?”;TypeError:req.next不是一个函数";错误?,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,我正在做一个项目,我不断地遇到这个错误,我试着修复它,但我不能?我理解它,但不知道如何修复它 以下是错误: events.js:292 throw er; // Unhandled 'error' event ^ TypeError: req.next is not a function at done (C:\Users\Children\Desktop\Web Projects\App Line Planner\node_modules\express\l
events.js:292
throw er; // Unhandled 'error' event
^
TypeError: req.next is not a function
at done (C:\Users\Children\Desktop\Web Projects\App Line Planner\node_modules\express\lib\response.js:1007:25)
at tryRender (C:\Users\Children\Desktop\Web Projects\App Line Planner\node_modules\express\lib\application.js:642:5)
at Function.render (C:\Users\Children\Desktop\Web Projects\App Line Planner\node_modules\express\lib\application.js:592:3)
at ServerResponse.render (C:\Users\Children\Desktop\Web Projects\App Line Planner\node_modules\express\lib\response.js:1012:7)
at C:\Users\Children\Desktop\Web Projects\App Line Planner\main.js:48:25
at C:\Users\Children\Desktop\Web Projects\App Line Planner\node_modules\mongoose\lib\model.js:4866:16
at C:\Users\Children\Desktop\Web Projects\App Line Planner\node_modules\mongoose\lib\model.js:4866:16
at C:\Users\Children\Desktop\Web Projects\App Line Planner\node_modules\mongoose\lib\helpers\promiseOrCallback.js:24:16
at C:\Users\Children\Desktop\Web Projects\App Line Planner\node_modules\mongoose\lib\model.js:4889:21
at C:\Users\Children\Desktop\Web Projects\App Line Planner\node_modules\mongoose\lib\query.js:4400:11
at C:\Users\Children\Desktop\Web Projects\App Line Planner\node_modules\kareem\index.js:136:16
at processTicksAndRejections (internal/process/task_queues.js:79:11)
Emitted 'error' event on Function instance at:
at C:\Users\Children\Desktop\Web Projects\App Line Planner\node_modules\mongoose\lib\model.js:4868:13
at C:\Users\Children\Desktop\Web Projects\App Line Planner\node_modules\mongoose\lib\helpers\promiseOrCallback.js:24:16
[... lines matching original stack trace ...]
at processTicksAndRejections (internal/process/task_queues.js:79:11)
从错误的角度来看,我非常确定错误在这个函数中:
app.get('/', function (req, res) {
if (namee == "") {
res.redirect('/login');
} else {
Item.find({ name: namee }, function (err, foundItemList) {
if (err) {
console.log(err);
} if (foundItemList) {
console.log(namee);
console.log("Found ITems: " + foundItemList);
for (var i = 0; i < foundItemList.length; i++) {
res.render('main', { item: foundItemList, foundItems: foundItemList[i].initem });
}
}
});
}
});
app.get('/',函数(req,res){
如果(名称==“”){
res.redirect('/login');
}否则{
find({name:namee},函数(err,foundItemList){
如果(错误){
控制台日志(err);
}if(foundItemList){
console.log(namee);
log(“找到的项目:+foundItemList”);
对于(var i=0;i
以下是完整的代码:
const express = require('express');
const bodyParser = require('body-parser');
const ejs = require('ejs');
const mongoose = require('mongoose');
mongoose.connect("mongodb://localhost:27017/appline", { useUnifiedTopology: true }, { useNewUrlParser: true });
const itemSchema = {
name: String,
initem: Array,
text: String,
tab: Number
}
const Item = mongoose.model("Item", itemSchema);
const app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static('public'));
const items = [];
const tabs = [];
var namee = "";
var tabb = 0;
app.get('/login', function (req, res) {
res.render('login');
});
app.post('/login', function (req, res) {
namee = req.body.name;
res.redirect('/');
})
app.get('/', function (req, res) {
if (namee == "") {
res.redirect('/login');
} else {
Item.find({ name: namee }, function (err, foundItemList) {
if (err) {
console.log(err);
} if (foundItemList) {
console.log(namee);
console.log("Found ITems: " + foundItemList);
for (var i = 0; i < foundItemList.length; i++) {
res.render('main', { item: foundItemList, foundItems: foundItemList[i].initem });
}
}
});
}
});
app.post('/addinitem', function (req, res) {
tabb += 1;
tex = req.body.addtoitem;
const item2 = new Item({
name: namee,
initem: [],
text: tex,
tab: tabb
});
Item.find({ name: namee }, function (err, foundITems) {
if (err) {
console.log(err);
} else if (foundITems) {
foundITems.initem.push(item2);
foundITems.save(function () {
res.redirect('/');
});
}
});
});
app.post('/add', function (req, res) {
const item = req.body.newItem;
console.log(item);
items.push(item);
const item1 = new Item({
name: namee,
initem: [],
text: item
});
item1.save();
console.log(item1);
res.redirect('/');
});
app.listen(3000, function () {
console.log('Server started on port 3000.');
});
const express=require('express');
const bodyParser=require('body-parser');
const ejs=require('ejs');
const mongoose=require('mongoose');
猫鼬。连接(“mongodb://localhost:27017/appline“,{useUnifiedTopology:true},{useNewUrlParser:true});
常量itemSchema={
名称:String,
initem:Array,
文本:字符串,
标签:编号
}
const Item=mongoose.model(“Item”,itemSchema);
常量app=express();
应用程序集(“查看引擎”、“ejs”);
use(bodyParser.urlencoded({extended:true}));
应用程序使用(express.static('public'));
常量项=[];
常量选项卡=[];
var namee=“”;
var-tabb=0;
app.get('/login',函数(req,res){
res.render(“登录”);
});
app.post('/login',函数(req,res){
namee=req.body.name;
res.redirect('/');
})
app.get('/',函数(req,res){
如果(名称==“”){
res.redirect('/login');
}否则{
find({name:namee},函数(err,foundItemList){
如果(错误){
控制台日志(err);
}if(foundItemList){
console.log(namee);
log(“找到的项目:+foundItemList”);
对于(var i=0;i
出现错误的原因可能是您在for
循环中多次使用res.render
,因此您需要将要显示的项目保存到对象中,并将其传递给render
函数中的选项
请查看以下代码:
app.get('/',函数(req,res){
var数据=[]
如果(名称==“”){
返回res.redirect('/login');
}否则{
find({name:namee},函数(err,foundItemList){
如果(错误){
控制台日志(err);
}if(foundItemList){
console.log(namee);
log(“找到的项目:+foundItemList”);
对于(var i=0;i });代码>有没有可能重构代码,只调用res.render
一次?我很确定在for
循环中多次调用它是导致错误的原因。哦,是的,谢谢!我会试试看它是否有效。也别忘了在if(err)中加入某种渲染{…
。否则,如果Item.find
抛出错误,您将不会呈现任何内容,页面将挂起。好的,谢谢它修复了问题!非常感谢!哦,在我完成此项目后,我将在我们的网站或Azi-Tec团队网站上发布它。如果您想查看并使用它,这里是link访问我们的网站,如果您想访问web应用程序,则该应用程序应在本周末到达。该项目称为app Lin Planner,其目的是帮助规划应用程序或网站或任何与编程相关的内容。如果您想查看,我们也有其他应用程序。