总结学习nodejs遇见的一些错误
express 4+
1.Router.use() requires middleware function but got a Object
处理:暴露接口: 在js文件顶部 加var express = require('express');
var router = express.Router();
文件底部 :module.exports = router;
2.Required MongoStore option db
missing
app.js 顶部加上
var session = require('express-session');
var MongoStore = require('connect-mongostore')(session);
然后继续
app.use(session({
secret: 'blog',
key: 'blog',//cookie name
cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days
store: new MongoStore({
db: 'blog',
host: 'localhost',
port: 27017
}),
resave:false,
saveUninitialized:true
}));
3.修改端口,或者端口被占用
var server = app.listen(5939, function () {
var host = server.address().address
var port = server.address().port
console.log("在这个端口访问 http://%s:%s", host, port)
});
4.mongodb 新建用户报错 : addUser is not a function
在mongo bin 目录下 打开命令行 输入如下信息创建
db.createUser(
{
user:"root",
pwd:"root",
roles:
[
{
role:"userAdminAnyDatabase",
db:"admin"
}
]
}
5./Users/michael/blog/node_modules/mongodb/lib/mongodb/connection/base.js:246 throw message; ^ TypeError: Cannot read property ‘length’ of undefined
额,,这个肯定也和版本的不同有关系,,,但是俺 可能粗暴了点,,直接找到mongo 下面的db.js ,(项目名\node_modules\mongodb\lib\mongodb\db.js),
把报错的地方注释掉了,,这里说length 没有定义,说明这个函数传的值有问题,,所以我找到应用到这个函数的三个地方注释后,代码运行成功。
————在数据库正确的连接上的时候,不影响数据的存储,数据存到数据库后可以被增删改查,可用shell命令进行查询
6.连接mongodb
连接mongodb数据库 可以尝试以下方法:
在需要用到数据库的界面加入以下代码,引用mondb,打开或关闭数据库。避免代码冗余重复,可以将代码单独放入一个js文件,通过require引入。
var markdown = require('markdown').markdown;
var server_options={};
var db_options={
w:-1,
logger:{
doDebug:true,
debug:function(msg,obj){
console.log('[debug]',msg);
},
log:function(msg,obj){
console.log('[log]',msg);
},
error:function(msg,obj){
console.log('[error]',msg);
}
}
};
var mongodb = require("mongodb"),
mongoserver = new mongodb.Server('localhost', 27017,server_options ),
mondb = new mongodb.Db('test', mongoserver, db_options);
7. …\connect-mongostore\lib\connect-mongostore.js:80…….if throw new Error<’Error connecting to database:\n”\n’+err.stark+’\n’>………Error connect to database…
如果是出现类似上面的错误,就说明数据库没有开启,没有连接上。
此时就要打开数据库。
8. Cannot start server. The default storage engine ‘wiredTiger’ is not available with……
启动mongodb闪退
路径对应上自己的文件路径
D:\Mongo\bin>mongod.exe --dbpath D:Mongo --storageEngine=mmapv1
如果执行此条命令后,出现 ..on port 27017字样 就是启动数据库成功。