想用nodejs实现一个简单的路由,安装运行出错?

server.js

const express=require('express');
const static=require('express-static');
const bodyParser=require('body-parser');
const multer=require('multer');
const multerObj=multer({dest: './static/upload'});
const mysql=require('mysql');
const cookieParser=require('cookie-parser');
const cookieSession=require('cookie-session');
const consolidate=require('consolidate');
const expressRoute=require('express-route');


var server = express()
server.listen(8080)

//获取前台请求数据
server.use(multerObj.any())
//cookie,session
  (function(){
    server.use(cookieParser());
    var keys=[]
    for(var i=0;i<100000;i++){
      keys[i]='a_'+Math.random()
    }

    server.use(cookieSession({
      name: 'sess_id',
      keys: keys,
      maxAge: 20*60*1000
    }))
  })()

//模板
server.engine('html', consolidate.ejs)
server.set('views', 'template')
server.set('view engine', 'html')


// route
var r1 = express.Router()
var r2 = express.Router()

server.use('/article', r1)
  r1.get('/1.html', function(req,res){
    res.send('我是文章').end()
  })
  r1.get('/2.html', function(req,res){
    res.send('我ye是文章').end()
  })

server.use('/blog', r2)
  r2.get('/a.html', function(req,res) {
    res.send('我是blog').end()
  })
  r2.get('/b.html', function(req,res) {
    res.send('我也是blog').end()
  })


// default: static
server.use(static('./static/'));

pack.json

{
  "devDependencies": {
    "body-parser": "^1.18.2",
    "consolidate": "^0.15.0",
    "cookie-parser": "^1.4.3",
    "cookie-session": "^2.0.0-beta.3",
    "express": "^4.16.2",
    "express-route": "^0.1.4",
    "express-static": "^1.2.5",
    "multer": "^1.3.0",
    "mysql": "^2.15.0",
    "static": "^2.0.0"
  }
}

clipboard.png

安装的时候会报错
clipboard.png

运行的时候会报错
clipboard.png

阅读 3.7k
8 个回答
const express=require('express');
const static=require('express-static');
const cookieParser=require('cookie-parser');
const cookieSession=require('cookie-session');
const bodyParser=require('body-parser');
const multer=require('multer');
const consolidate=require('consolidate');
const mysql=require('mysql');

//连接池
const db=mysql.createPool({host: 'localhost', user: 'root', password: '123456', database: 'blog'});

var server=express();
server.listen(8081);

//1.解析cookie
server.use(cookieParser('sdfasl43kjoifguokn4lkhoifo4k3'));

//2.使用session
var arr=[];
for(var i=0;i<100000;i++){
  arr.push('keys_'+Math.random());
}
server.use(cookieSession({name: 'zns_sess_id', keys: arr, maxAge: 20*3600*1000}));

//3.post数据
server.use(bodyParser.urlencoded({extended: false}));
//server.use(multer({dest: './www/upload'}).any());

//4.配置模板引擎
//输出什么东西
server.set('view engine', 'html');
//模板文件放在哪儿
server.set('views', './template/web');
//哪种模板引擎
server.engine('html', consolidate.ejs);

//接收用户请求

var r1= express.Router()
var r2= express.Router()


server.get('/', (req, res)=>{
  res.render('index.ejs');
});

server.use('/article/', r1)
  r1.get('/1.html', function(req, res){
    res.send('wobushi文章')
})

server.use('/blog/', r2)
  r2.get('/2.html', function(req, res){
    res.send('你是不是wen')
})

//4.static数据
server.use(static('./www'));

代码太多了不好看.
建议单独开一个项目.
只测试必要的包(你觉得有问题的包).
这样缩小范围后才好定位问题在哪

express-router的版本和node版本不匹配,装个新一点的node和新一点的express-router

现在最新的nodejs都到9.x.x了,建议别再用6x的版本。

另外,如果只想学路由的话,没必要引入那么多的包。

如果后端使用express的话,对于初学者来说,非常建议使用express-generator,它会自动帮你生成一份带有路由,视图等一套开箱即用的一套后端模板。

你这个明显就是安装的包和nodejs不兼容,你安装的几个包都是最新的,还有有测试版本,nodejs版本过低,这些最新的包明显不兼容。

谢邀
从错误信息来看,应该是nodejs和express版本不兼容的问题

安装报错说的是express-router版本太旧了。更新一下之后再试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏