- 浏览: 5101043 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
这些天有点儿空闲,学习了一下node.js。先把《Node.js开发指南》书中的博客例子调通了,费了挺大的劲儿,因为好多插件出了新的版本,而新版本中有的函数、方法又失效了。
自已又练习着做了一个例子,个人记账系统。主要是想在手机上用,所以界面做得很简单。
解决了以下一些问题:express使用、bootstrap排版布局、mongodb模糊查询、mongodb统计(group/mapReduce)、session处理、req.flash方法使用等、路由设置等。花了不少的心思。
例子中用到的插件的版本:
connect-flash@0.1.1
connect-mongo@0.4.0
ejs@0.8.5
express@3.4.8
mongodb@1.3.23
Bootstrap V3.0.3
贴几张系统运行的图片,有图有真相嘛。
核心代码贴一下:
一、app.js
二、路由处理(routes\index.js)
三、消费数据处理(modules\consume.js)
全部源码见附件。
另,2014-04-02
系统开发好了之后,找了个服务器部署了一下,老婆用得不错,原来不太喜欢记账,现在记账很积极。我就又把系统完善了一下,增加了翻页、权限控制功能,将几个按钮修改成图标,布局更紧凑了一些,使用全局变量保存系统名称,方便修改。
骚年,我运行是对的。看看是不是插件版本的问题。
附件中是代码就是完整的代码,不能正常运行可能跟Node.js、以及使用插件的版本有关。
后面是较新版本的软件,后来简单修改了一下。第一个文件是最初的版本。
上传了附件,你自己下载吧,不发邮件了。
h5的代码什么意思?
留个邮箱,可以给你全部代码。
自已又练习着做了一个例子,个人记账系统。主要是想在手机上用,所以界面做得很简单。
解决了以下一些问题:express使用、bootstrap排版布局、mongodb模糊查询、mongodb统计(group/mapReduce)、session处理、req.flash方法使用等、路由设置等。花了不少的心思。
例子中用到的插件的版本:
connect-flash@0.1.1
connect-mongo@0.4.0
ejs@0.8.5
express@3.4.8
mongodb@1.3.23
Bootstrap V3.0.3
贴几张系统运行的图片,有图有真相嘛。
核心代码贴一下:
一、app.js
/** * Module dependencies. */ var express = require('express'); var http = require('http'); var path = require('path'); var util=require('util'); var routes = require('./routes'); //var User = require('./modules/user.js'); var settings=require('./Settings'); var MongoStore = require('connect-mongo')(express); var flash = require('connect-flash'); var app = express(); //app.set('appTitle','老王个人记账系统'); app.locals.gAppTitle = settings.appName; //这个没有使用 app.locals.gPageSize = settings.pageSize; // all environments app.set('port', process.env.PORT || 8484); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.json()); app.use(express.bodyParser()); app.use(express.urlencoded()); app.use(express.methodOverride()); app.use(express.cookieParser()); app.use(flash()); app.use(express.session({ "secret":settings.cookieSecret, "store":new MongoStore({ db:settings.db }) })); app.use(function(req, res, next){ //跟踪; //console.log("req.method="+req.method); //console.log("req.url="+req.url); //console.log("req.originalUrl="+req.originalUrl); var url = req.originalUrl; //简单地定义一个登录拦截器 if ((url == "/month" || url=="/stat" || url=='/list' || url=='/record') && !req.session.user) { console.log("登录拦截器提示:必须登录,才能执行此项操作。"); req.flash('error', '请先登录。'); return res.redirect("/login"); } res.locals.user = req.session.user; var error = req.flash('error'); res.locals.error = error.length?error:null; //console.log("转移flash中的error值:"+error); var success = req.flash('success'); res.locals.success = success.length?success:null; //console.log("转移flash中的success值:"+success); res.locals.session = req.session; next(); }); app.use(app.router); app.use(express.static(path.join(__dirname, 'public'))); //console.log(util.inspect(app)); // development only if ('development' == app.get('env')) { app.use(express.errorHandler()); } //console.log('注册路由.'); routes(app); http.createServer(app).listen(app.get('port'), function(){ console.log(); console.log(); console.log('/**************************************************/'); console.log('/* 我的第一个NODE.JS例子。BY 隔壁老王 2014-3-29 */'); console.log('/* 欢迎访问我的博客:http://wallimn.iteye.com */'); console.log('/**************************************************/'); console.log('============服务启动成功,监听端口:' + app.get('port')+"============"); });
二、路由处理(routes\index.js)
var crypto = require('crypto'); var User = require('../modules/user.js'); var Consume = require('../modules/consume.js'); /* * GET home page. */ module.exports = function(app) { app.get('/',function(req, res){ res.render('index', { title: '首页' }); /* res.render('login',{ title:'用户登录', }); */ //res.redirect('/login'); }); app.get('/record',function(req,res){ var user = req.session.user; if(!user){ req.flash('error', '用户未登录,请登录。'); return res.redirect('/login'); } Consume.get(user.name,{limit:16}, function(err, records) { if (err) { req.flash('error', err); return res.redirect('/error'); } res.render('record', { title: user.name, consumes: records, }); }); }); //预处理,如果通过,再进行下一个。 app.post('/record',checkLogin); app.post('/record', function(req, res) { var currentUser = req.session.user; var record = new Consume(); record.loadFromReq(currentUser.name, req.body); record.save(function(err) { if (err) { req.flash('error', err); return res.redirect('/'); } req.flash('success', '发表成功'); res.redirect('/record'); }); }); //这个应该去掉。留在这里当个后门吧 //可以查看其他用户的数据 app.get('/u/:user', function(req, res) { var username = req.params.user; if (!username) { req.flash('error', '未指定用户'); return res.redirect('/error'); } Consume.get(username,{limit:0}, function(err, records) { if (err) { req.flash('error', err); return res.redirect('/error'); } console.log(records); res.render('list', { title: username, consumes: records, }); }); }); app.get('/del/:id', function(req, res) { var id = req.params.id; if (!id) { req.flash('error', '未指定要删除的记录ID'); return res.redirect('/error'); } console.log("准备删除记账记录,_id="+id); Consume.del(id, function(err, records) { if (err) { req.flash('error', err); return res.redirect('/error'); } res.redirect('/record');; }); }); app.get('/logout',function(req,res){ req.session.user = null; req.flash('success','登出成功'); res.redirect('/login'); }); app.get('/list',function(req,res){ var user = req.session.user; if(!user){ req.flash('error', "您没有登录,请登录。"); console.log("没有登录,重定向的登录界面。"); return res.redirect('/login'); } Consume.get(user.name,{limit:0}, function(err, records) { if (err) { req.flash('error', err); return res.redirect('/error'); } res.render('list', { title: user.name, consumes: records, }); }); }); app.post('/search',function(req,res){ var user = req.session.user; if(!user){ req.flash('error', "您没有登录,请登录。"); return res.redirect('/login'); } var keyword = req.body.keyword; console.log("搜索关键字:"+keyword); Consume.get(user.name,{limit:0,keyword:keyword}, function(err, records) { if (err) { req.flash('error', err); return res.redirect('/error'); } res.render('record', { title: user.name, consumes: records, }); }); }); app.get('/stat',function(req,res){ var user = req.session.user; Consume.stat(user.name, function(err, results) { if (err) { req.flash('error', err); return res.redirect('/error'); } res.render('stat', { title: user.name, results: results, }); }); }); app.get('/month',function(req,res){ var user = req.session.user; Consume.month(user.name, function(err, results) { if (err) { req.flash('error', err); return res.redirect('/error'); } res.render('stat', { title: user.name, results: results, }); }); }); app.get('/error',function(req,res){ res.render('error'); }); //处理用户登录。 app.post('/login',function(req,res){ var md5=crypto.createHash('md5'); var password = md5.update(req.body.password).digest('hex'); User.get(req.body.username,function(err,user){ if(!user){ req.flash('error','用户不存在'); return res.redirect('/login'); } if(user.password!=password){ req.flash('error','用户口令错误'); return res.redirect('/login'); } req.session.user = user; req.flash('success','登入成功'); //res.redirect('/'); res.redirect('/record'); }); }); app.get('/login',function(req,res){ res.render('login',{ title:'用户登录', }); }); app.get('/reg',function(req,res){ res.render('reg',{ title:'用户注册' }); }); app.post('/reg',function(req,res){ if(req.body['password-repeat']!=req.body['password']){ req.flash('error','两次输入的口令不一致!'); return res.redirect('/reg'); } var md5=crypto.createHash('md5'); var password = md5.update(req.body.password).digest('hex'); var newUser = new User({ name:req.body.username, password:password, }); User.get(newUser.name,function(err,user){ if(user) err='同名用户已经存在,请更换名字.'; if(err){ req.flash('error',err); return res.redirect('/reg'); } newUser.save(function(err){ if(err){ req.error=err; return res.redirect('/reg'); } req.session.user = newUser; req.flash('success','注册成功!'); res.redirect('/record'); }); }); }); //测试函数 app.get('/hello',function(req,res){ res.send('The time is '+new Date().toString()); }); //测试函数 app.get('/sayhello',function(req,res){ res.send('hello '+req.params.username); }); }; //检查是否登入. function checkLogin(req, res, next) { if (!req.session.user) { req.flash('error', '尚未登录,无法操作。'); return res.redirect('/error'); } next(); } function checkNotLogin(req, res, next) { if (req.session.user) { req.flash('error', '已登入'); return res.redirect('/'); } next(); }
三、消费数据处理(modules\consume.js)
var mongodb = require('./db'); var BSON = require('mongodb').BSONPure; var util=require('util'); function toObjectId(id){ console.log("转换值:"+id); if( id=="" || id=="null" || id=="undefined" || id==undefined || id==null)return null; return BSON.ObjectID.createFromHexString(id); } function Consume(username, consumeDate,consumeSubject,consumeAmount,consumeRemark, time) { //加载时要单独赋值 this._id=null; this.userName = username; this.consumeDate = consumeDate; this.consumeSubject = consumeSubject; this.consumeAmount = consumeAmount; this.consumeRemark = consumeRemark; if (time) { this.time = time; } else { this.time = new Date(); } }; module.exports = Consume; Consume.prototype.loadFromReq = function loadFromReq(username,reqBody,time){ //自动进行了ID类型的转换。 this._id = toObjectId(reqBody._id); this.userName = username; this.consumeDate = reqBody.consumeDate; this.consumeSubject = reqBody.consumeSubject; this.consumeAmount = reqBody.consumeAmount; this.consumeRemark = reqBody.consumeRemark; if (time) { this.time = time; } else { this.time = new Date(); } } Consume.prototype.save = function save(callback) { // 存入 Mongodb 的文档 var record = { _id:this._id, userName: this.userName, consumeDate: this.consumeDate, consumeSubject: this.consumeSubject, consumeAmount: this.consumeAmount, consumeRemark: this.consumeRemark, time: this.time, }; console.log('保存,记录日期:'+record.consumeDate); mongodb.open(function(err, db){ if (err) { return callback(err); } // 读取 posts 集合 db.collection('consume', function(err, collection){ if (err) { mongodb.close(); return callback(err); } // 插入 /* collection.insert(record, {safe: true} , function(err, post){ mongodb.close(); callback(err, post); }); */ console.log("插入或更新,判断依据_id="+record._id); if(record._id==null){ delete record._id; console.log("删除_id,record._id="+record._id); } collection.update({_id:(record._id?record._id:'no-record')}, record, {upsert:true,multi:false} , function(err, post){ mongodb.close(); callback(err, post); }); }); }); }; //删除方法 Consume.del = function del(id,callback){ mongodb.open(function(err,db){ if (err){ return callback(err); } var query = {_id:BSON.ObjectID.createFromHexString(id)}; db.collection('consume', function(err, collection){ if (err){ mongodb.close(); return callback(err); } collection.remove(query,{safe:true},function(err,result){ mongodb.close(); if (err){ return callback(err); } console.log("删除成功。"); callback(null); }) ; }); }); }; Consume.get = function get(username,options, callback) { mongodb.open(function(err, db){ if (err){ return callback(err); } // 读取 posts 集合 db.collection('consume', function(err, collection){ if (err){ mongodb.close(); return callback(err); } var query = {}; if(options.keyword){ //var regx = new RegExp("/"+options.keyword+"/"); //注意,不用/ var regx = new RegExp(options.keyword); //限制用户名,科目或者金额与输入关键相等 query={"$and":[{userName:username}, {"$or":[{consumeSubject:regx}, {consumeDate:regx}, {consumeAmount:options.keyword} ] }] }; } else{ query.userName = username; } console.log("搜索条件:"); console.log(query); if(!options.limit){ options.limit=0; } collection.find(query).sort({consumeDate:-1 }).limit(options.limit).toArray(function(err, docs){ mongodb.close(); if (err){ callback(err, null); } var consumes = []; docs.forEach(function(doc, index){ var record = new Consume(doc.userName, doc.consumeDate,doc.consumeSubject,doc.consumeAmount,doc.consumeRemark, doc.time); record._id = doc._id; consumes.push(record); }); callback(null, consumes); }); }); }); }; Consume.stat = function stat(username, callback) { mongodb.open(function(err, db){ if (err){ return callback(err); } // 读取 posts 集合 db.collection('consume', function(err, collection){ if (err){ mongodb.close(); return callback(err); } var reduce = function(obj,prev){ prev.amount += isNaN(obj.consumeAmount)?0:Number(obj.consumeAmount); prev.count++; }; collection.group( [ 'consumeSubject' ], {userName:username}, {count:0,amount:0}, reduce, function(err, result){ mongodb.close(); if (err){ callback(err, null); } else{ console.log(result[0]); var amount = 0,count=0; result.forEach(function (item,index){ amount += item.amount; count += item.count; }); result.push({consumeSubject:'【合计】',count:count,amount:amount}); callback(null, result); } }); }); }); }; Consume.month = function month(username, callback) { mongodb.open(function(err, db){ if (err){ return callback(err); } // 读取 posts 集合 db.collection('consume', function(err, collection){ if (err){ mongodb.close(); return callback(err); } var map = function(){ emit(this.consumeDate.substr(0,7),{amount:this.consumeAmount,count:1}); }; var reduce = function(key,vals){ var val = 0,count=0; for(var i=0; i<vals.length;i++){ val += isNaN(vals[i].amount)?0:Number(vals[i].amount); count++; } return {amount:val,count:count}; } console.log("统计:"+username); collection.mapReduce( map, reduce, {out: {replace : 'temp', readPreference : 'secondary', query:{userName:username}}}, function(err, collection){ if (err){ mongodb.close(); callback(err, null); } else{ //console.log(collection); /* var amount = 0,count=0; result.forEach(function (item,index){ amount += item.amount; count += item.count; }); result.push({consumeSubject:'【合计】',count:count,amount:amount}); */ var results = []; collection.find().toArray(function(err,docs){ docs.forEach(function(item,idx){ console.log(item); //为了共用结果页面,统一使用consumeSubject results.push({consumeSubject:item._id,amount:item.value.amount,count:item.value.count}); }); mongodb.close(); callback(null, results); }); } }); }); }); };
全部源码见附件。
另,2014-04-02
系统开发好了之后,找了个服务器部署了一下,老婆用得不错,原来不太喜欢记账,现在记账很积极。我就又把系统完善了一下,增加了翻页、权限控制功能,将几个按钮修改成图标,布局更紧凑了一些,使用全局变量保存系统名称,方便修改。
- account.rar (297 KB)
- 描述: 个人记账系统源码
- 下载次数: 1012
- microblog.rar (250.8 KB)
- 描述: 调试通过的书中例子
- 下载次数: 529
- account(查询后修改保持查询条件V0.0.6).rar (308.1 KB)
- 描述: 查询后保持查询条件,较新的版本。
- 下载次数: 418
评论
21 楼
dengfeng_dengfeng
2017-06-23
纳尼 启动了 访问不了了啊 报这个错
/**************************************************/
/* 我的第一个NODE.JS例子。BY 隔壁老王 2014-3-29 */
/* 欢迎访问我的博客:http://wallimn.iteye.com */
/**************************************************/
============服务启动成功,监听端口:8484============
C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\connection\base.js:2
42
throw message;
^
Error: Error setting TTL index on collection : sessions
at C:\account\node_modules\_connect-mongo@0.4.0@connect-mongo\lib\connect-mo
ngo.js:161:23
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\db.js:1430:36
at __executeInsertCommand (C:\account\node_modules\_mongodb@1.3.23@mongodb\l
ib\mongodb\db.js:1829:12)
at Db._executeInsertCommand (C:\account\node_modules\_mongodb@1.3.23@mongodb
\lib\mongodb\db.js:1930:5)
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\db.js:1427:14
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\db.js:1560:7
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\cursor.js:162
:16
at commandHandler (C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongo
db\cursor.js:706:16)
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\db.js:1806:9
at Server.Base._callHandler (C:\account\node_modules\_mongodb@1.3.23@mongodb
\lib\mongodb\connection\base.js:442:41)
/**************************************************/
/* 我的第一个NODE.JS例子。BY 隔壁老王 2014-3-29 */
/* 欢迎访问我的博客:http://wallimn.iteye.com */
/**************************************************/
============服务启动成功,监听端口:8484============
C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\connection\base.js:2
42
throw message;
^
Error: Error setting TTL index on collection : sessions
at C:\account\node_modules\_connect-mongo@0.4.0@connect-mongo\lib\connect-mo
ngo.js:161:23
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\db.js:1430:36
at __executeInsertCommand (C:\account\node_modules\_mongodb@1.3.23@mongodb\l
ib\mongodb\db.js:1829:12)
at Db._executeInsertCommand (C:\account\node_modules\_mongodb@1.3.23@mongodb
\lib\mongodb\db.js:1930:5)
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\db.js:1427:14
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\db.js:1560:7
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\cursor.js:162
:16
at commandHandler (C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongo
db\cursor.js:706:16)
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\db.js:1806:9
at Server.Base._callHandler (C:\account\node_modules\_mongodb@1.3.23@mongodb
\lib\mongodb\connection\base.js:442:41)
20 楼
wallimn
2016-07-16
a54409 写道
全tm错的
骚年,我运行是对的。看看是不是插件版本的问题。
19 楼
a54409
2016-06-28
全tm错的
18 楼
os_rover
2016-05-19
luguofei123@126.com
17 楼
os_rover
2016-05-19
[color=olive][color=cyan][size=xx-small][align=right][/size][/color][/color]
[/align]
引用 [list] | |
[*][img][url][/url][/img] | :P :twisted: :idea: :P :? :) |
[/list] |
16 楼
荆人七十
2016-05-17
谢谢分享~
15 楼
wallimn
2016-03-07
炫oO游侠 写道
王哥啊,学习你的资料中,目前已经运行起来了,但是程序经常出错,而且只能显示一条记录,编辑和删除还会导致崩溃,需要重启服务才行,请问你有完整的代码吗?或者能告知一下原因吗?我的邮箱503045550@qq.com
附件中是代码就是完整的代码,不能正常运行可能跟Node.js、以及使用插件的版本有关。
14 楼
炫oO游侠
2016-01-13
王哥啊,学习你的资料中,目前已经运行起来了,但是程序经常出错,而且只能显示一条记录,编辑和删除还会导致崩溃,需要重启服务才行,请问你有完整的代码吗?或者能告知一下原因吗?我的邮箱503045550@qq.com
13 楼
lwf60925
2016-01-13
老王哥,无法找到bson module是什么原因,我想问老王哥bson的版本有自己npm install 吗
12 楼
lwf60925
2015-12-26
王哥,提交记录的时候,id变成no-record。然后每一次提交都直接修改这个了
11 楼
wallimn
2015-12-14
鲁迅的围脖 写道
这是我的邮箱:luguofei123@126.com 谢谢老王哥了
后面是较新版本的软件,后来简单修改了一下。第一个文件是最初的版本。
10 楼
wallimn
2015-12-14
鲁迅的围脖 写道
这是我的邮箱:luguofei123@126.com 谢谢老王哥了
上传了附件,你自己下载吧,不发邮件了。
9 楼
鲁迅的围脖
2015-12-11
这是我的邮箱:luguofei123@126.com 谢谢老王哥了
8 楼
wallimn
2015-12-10
鲁迅的围脖 写道
老王哥,能提供一下app的h5代码吗?
h5的代码什么意思?
留个邮箱,可以给你全部代码。
7 楼
鲁迅的围脖
2015-12-10
老王哥,能提供一下app的h5代码吗?
6 楼
wallimn
2015-07-22
可能是connect-mongo的版本问题,我当时试着是好的。试试我使用的版本。
mongo数据库表结构会自动生成。
mongo数据库表结构会自动生成。
5 楼
ilywmf
2015-07-22
C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\lib\mong
odb\connection\base.js:242
throw message;
^
Error: Error setting TTL index on collection : sessions
at C:\Program Files\nodejs\node_modules\connect-mongo\lib\connect-mongo.js:1
61:23
at C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\l
ib\mongodb\db.js:1430:36
at __executeInsertCommand (C:\Program Files\nodejs\node_modules\connect-mong
o\node_modules\mongodb\lib\mongodb\db.js:1829:12)
at Db._executeInsertCommand (C:\Program Files\nodejs\node_modules\connect-mo
ngo\node_modules\mongodb\lib\mongodb\db.js:1930:5)
at C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\l
ib\mongodb\db.js:1427:14
at C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\l
ib\mongodb\db.js:1560:7
at C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\l
ib\mongodb\cursor.js:162:16
试了下个人记账系统源码,报错了,不知什么原因
另外,mongo数据库表结构呢,自动生成的吗?
odb\connection\base.js:242
throw message;
^
Error: Error setting TTL index on collection : sessions
at C:\Program Files\nodejs\node_modules\connect-mongo\lib\connect-mongo.js:1
61:23
at C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\l
ib\mongodb\db.js:1430:36
at __executeInsertCommand (C:\Program Files\nodejs\node_modules\connect-mong
o\node_modules\mongodb\lib\mongodb\db.js:1829:12)
at Db._executeInsertCommand (C:\Program Files\nodejs\node_modules\connect-mo
ngo\node_modules\mongodb\lib\mongodb\db.js:1930:5)
at C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\l
ib\mongodb\db.js:1427:14
at C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\l
ib\mongodb\db.js:1560:7
at C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\l
ib\mongodb\cursor.js:162:16
试了下个人记账系统源码,报错了,不知什么原因
另外,mongo数据库表结构呢,自动生成的吗?
4 楼
vickypig
2014-06-04
express的版本啊。。。真心受不了
3 楼
wallimn
2014-05-31
Unexpected token ILLEGAL
看看函数的接口参数数量、类型是否正确。
看看函数的接口参数数量、类型是否正确。
2 楼
vickypig
2014-05-28
你好,记账这个,报错了。能看看是什么问题吗
E:\node\account\node_modules\mongodb\lib\mongodb\connection\repl_set\strategies\statistics_strategy.js:1
(function (exports, require, module, __filename, __dirname) {
^
SyntaxError: Unexpected token ILLEGAL
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (E:\node\account\node_modules\mongodb\lib\mongodb\connection\repl_set\repl_set.js:9:26)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
Process finished with exit code 8
E:\node\account\node_modules\mongodb\lib\mongodb\connection\repl_set\strategies\statistics_strategy.js:1
(function (exports, require, module, __filename, __dirname) {
^
SyntaxError: Unexpected token ILLEGAL
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (E:\node\account\node_modules\mongodb\lib\mongodb\connection\repl_set\repl_set.js:9:26)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
Process finished with exit code 8
发表评论
-
gradle编译错误:Could not find method compile() for arguments
2020-09-19 10:50 18184编译(IDEA+Gradle)一个别人的工程,出现一个 ... -
netty心跳检查之UDP篇
2019-09-15 08:50 2120部分UDP通信场景中,需要客户端定期发送心跳信息,以获取终 ... -
解决tomcat部署两个SpringBoot应用提示InstanceAlreadyExistsException
2019-06-30 11:49 3167两个SpringBoot应用部署在一个Tomcat中,单独 ... -
Eclipse配置MyBatis代码自动化功能
2019-06-29 10:16 16401.安装插件 Eclipse中,Help->Ecli ... -
vue.js中使用qrcode生成二维码
2019-05-20 00:00 7559一、安装包 npm install qrcodejs2 --s ... -
MySQL插入数据报错: Incorrect string value: '\xFD\xDE'
2019-03-31 23:19 1171我MySQL数据库用的uft-8字符集,插入数据一直很正常 ... -
vue自定义组件并双向绑定属性
2019-03-08 22:46 3208做了两个子组件,原理基本一样,一个是使用原生的select ... -
vue-router简单示例
2019-03-05 00:32 1088写个基本完整、稍有借鉴意义的示例,防止自己忘记。 &l ... -
“联通充值系统繁忙”轻松应对
2019-02-06 11:03 3904大过年的,联通充个值一直报“充值系统繁忙”。昨天晚上试了几 ... -
electron.js数据库应用---导航菜单(element-ui+mysql)
2019-02-05 21:33 2296一、环境搭建 略, ... -
electron.js数据库应用---入门(mysql+element-ui)
2019-01-27 23:19 7304我的机器:Windows10,64 ... -
SpringMVC 在controller层中注入成员变量request,是否线程安全
2018-12-17 21:17 2690@RestController public class ... -
VueJS 组件参数名命名与组件属性转化
2018-12-03 00:00 2003转自:https://www.cnblogs.com/meiy ... -
vue-resource拦截器实现token发送及检验自动化
2018-11-16 22:38 3040用了很长时间vue-resource,最近思考$http发 ... -
element-ui试用手记
2018-10-29 20:25 1684element-ui、iviewui都以vue.js为基础 ... -
iviewui中表格控件中render的使用示例
2018-07-07 16:46 9712示例了如何在表格中显示按钮,如何将代码转化为文字。 i ... -
Tomcat错误“Alias name tomcat does not identify a key entry”解决
2018-07-05 21:39 6176申请到了阿里云的证书后,下载、按照说明生成jks格式证书、 ... -
阿里云免费证书“fileauth.txt内容配置错误”解决
2018-07-05 20:43 5194最近研究微信小程序开发,上阿里云申请了个证书,使用文件验证 ... -
springboot2.0跨域配置
2018-07-04 22:11 5234springboot2.0跨域配置: 一、代码 ... -
微信小程序使用code换openid的方法(JAVA、SpringBoot)
2018-07-01 21:52 10293微信小程序序的代码中提示,使用code换取openid,但 ...
相关推荐
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
2024年中国MXene行业研究报告
附件是TensorFlow安装步骤,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!
ISO IEC 27001-2022 信息安全、网络安全和隐私保护信息安全管理系统要求.pdf
此试题是考试后回忆版本,你会发现是惊喜。恭喜你考个好成绩。
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
内容概要:这份资料包含了计算机二级公共基础知识速学教程的内容大纲,涵盖了数据结构与算法、程序设计基础、软件工程基础、数据库设计基础等多个章节。其中包括了算法复杂度、数据结构、栈、队列、链表、二叉树、查找、排序等内容,以及程序设计方法、软件工程概念、数据库设计原理等知识点。 适用人群:适合希望系统学习计算机二级公共基础知识的学生、计算机专业学习者、程序员、软件工程师以及对数据结构、算法和数据库设计感兴趣的人群,希望通过系统学习提升自己的计算机基础知识和技能。 使用场景及目标:该教程可用于计算机相关专业的课程学习、自学提升或备考计算机二级公共基础考试。学习者可以通过逐章学习和实践,掌握数据结构与算法、程序设计基础、软件工程基础和数据库设计基础等知识,提高自己在计算机领域的理论基础和实践能力。 其他说明:学习者在使用这份教程时,可以结合实际案例和练习题进行深入学习和巩固。建议按照章节顺序系统学习,理解各个知识点的概念和应用,并通过实践项目或练习加深对计算机基础知识的理解和掌握。通过系统学习,可以提升自己在计算机领域的专业水平和能力。
IEC 60364-7-722-2018 低压电气装置.第7-722部分:特殊装置或场所的要求.电动车辆的电源.pdf
ISO IEC 27021-2017 信息技术.安全技术.信息安全管理系统专业人员的能力要求.pdf
减速振动控制有限公司
2024年中国5G基站射频元件行业研究报告
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
云服务H13831题库HCIE CloudService SolutionsArchitect
大学生,数学建模,美国大学生数学建模竞赛,MCM/ICM,2023年美赛特等奖O奖论文
大模型简历模板通常包括个人信息、求职目标、教育背景、工作经历、技能专长、项目经验、荣誉奖项等内容。通过清晰的排版和详细的描述,展示出个人的专业能力和职业发展规划,吸引用人单位的注意。
SBC0001345K.8 SBC0001345K.10 手册
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
MAGLINK LX 控制台手册