几乎每天早上都会出现TypeError: Cannot set property 'username' of undefined.,然后服务器挂掉
发布于 9 年前 作者 NightCatSama 7140 次浏览 最后一次编辑是 8 年前 来自 问答

平常开启后无论怎么操作都不会出事或报错,但几乎每天早上睡觉起来再开网站就会出现 “TypeError: Cannot set property ‘username’ of undefined.”报错,但有时又不会。 请帮我看看哪里出错了~

var url = require("url");
var queryString  = require("querystring");
var express = require('express');
var router = express.Router();

var flag = false;

var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/Users');

router.get('/', function(req, res, next) {
	var username = ''
	var collection = db.get("userdata");
	var stringA = req.originalUrl
	var UID =  stringA.substr(stringA.indexOf("?")+5)
	if(UID){
	collection.find({
    	"UID" : UID
	},function(err,docs){
		if(err){console.log(err)}
		else {
			username=docs[0].username
	}
	});
	setTimeout(function(){
    	res.render('blog',{ username : username });
	},200)
	}
	else { res.render('blog',{ username : '' });}
});
\n```
这是blog.ejs引用username代码
```html
<body data-username="<%= username %>">

这是网站nightcatsama.com

5 回复

username=docs[0].username 貌似是这里报错的吧,应该是根据UID没有找到相应的数据

@jiangli373 的确如果用自己故意加上?UID=1111的话会出现这种情况

@jiangli373 但是我的网站又没人会来,所以应该不存在上面那种情况,直接打开的话应该是运行else { res.render(‘blog’,{ username : ‘’ });}而跳过这段出错的代码username=docs[0].username吧~

@NightCatSama 这个不太清楚你的运行机制了,你给的网站地址不对,不过你可以在代码里面做下判断,如果找到结果再给username赋值

@jiangli373 你提的那处我已经修复了~ 但是应该不是问题出错的原因, 但是还是谢谢你OvO

回到顶部