鍍金池/ 問答/網(wǎng)絡安全  HTML/ 想用nodejs實現(xiàn)一個簡單的路由,安裝運行出錯?

想用nodejs實現(xiàn)一個簡單的路由,安裝運行出錯?

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)

//獲取前臺請求數(shù)據(jù)
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

回答
編輯回答
護她命

Just for fun——PHP框架之簡單的路由器(1)
雖然是用PHP寫的,但是原理是一致的,node也可以實現(xiàn),希望能幫到你^_^

2017年8月7日 10:00
編輯回答
艷骨

express-router的版本和node版本不匹配,裝個新一點的node和新一點的express-router

2017年3月24日 05:20
編輯回答
深記你

代碼太多了不好看.
建議單獨開一個項目.
只測試必要的包(你覺得有問題的包).
這樣縮小范圍后才好定位問題在哪

2018年2月16日 15:22
編輯回答
墻頭草

你這個明顯就是安裝的包和nodejs不兼容,你安裝的幾個包都是最新的,還有有測試版本,nodejs版本過低,這些最新的包明顯不兼容。

2017年1月15日 15:25
編輯回答
老梗

安裝報錯說的是express-router版本太舊了。更新一下之后再試試

2017年11月23日 14:22
編輯回答
溫衫

現(xiàn)在最新的nodejs都到9.x.x了,建議別再用6x的版本。

另外,如果只想學路由的話,沒必要引入那么多的包。

如果后端使用express的話,對于初學者來說,非常建議使用express-generator,它會自動幫你生成一份帶有路由,視圖等一套開箱即用的一套后端模板。

2017年6月21日 11:20
編輯回答
嫑吢丕

謝邀
從錯誤信息來看,應該是nodejs和express版本不兼容的問題

2017年4月5日 13:16
編輯回答
青黛色
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數(shù)據(jù)
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數(shù)據(jù)
server.use(static('./www'));
2018年5月26日 12:50