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

发布于 2022-09-06 13:07:06 字数 2197 浏览 24 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

故事未完 2022-09-13 13:07:06
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'));
许你一世情深 2022-09-13 13:07:06

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

人生百味 2022-09-13 13:07:06

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

独自唱情﹋歌 2022-09-13 13:07:06

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

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

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

谜兔 2022-09-13 13:07:06

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

随心而道 2022-09-13 13:07:06

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

浪荡不羁 2022-09-13 13:07:06

Just for fun——PHP框架之简单的路由器(1)
虽然是用PHP写的,但是原理是一致的,node也可以实现,希望能帮到你^_^

走野 2022-09-13 13:07:06

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文