node.js - nodejs connect中间件没有运行?大神帮解决
怪我咯
怪我咯 2017-04-17 11:56:34
[Node.js讨论组]

帮忙看下代码,运行后,网页打开是空的,没有发出GET请求,而且控制台也没输出“中间件1”。说明中间件并没有运行。。。
代码如下:

js//模块依赖
var fs=require('fs');
var connect=require('connect');
//创建服务器
var server=connect();

//处理静态文件
server.use(connect.static(__dirname+'/website'));


//中间件
server.use(function(req,res,next){
    //记录日志
    console.error('%s %s',req.method,req.url);
    next();
});

server.use(function(req,res,next){
    console.log('中间件1');
    if(req.method=='GET'&&req.url.substr(0,7)=='/images'){
        //托管图片
        url=__dirname+req.url;
        fs.stat(url,function(err,stat){
            if(err||!stat.isFile()){
                //404
                res.writeHead(404);
                res.end('Not Found!');
                return;
            }
            serve(url,'application/jpg');
        })
    }else{
        //交给其他中间件处理
        next();
    }
});

server.use(function(req,res,next){
    console.log('中间件2');
    if(req.method=='GET'&&req.url=='/'){
        serve(__dirname+'/index.html','text/html');
    }else{
        next();
    }
});

server.use(function(req,res,next){
    //z最后一个中间件,如果到了这里,就以为着无能为力,只能返回404了
    res.writeHead(404);
    res.end('Not Found!');
});

function serve(path,type){
    res.writeHead(200,{'Content-Type':type});
    fs.createReadStream(path).pipe(res);
}

server.use(connect.logger('dev'));  
//监听
server.listen(3000);
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
迷茫

最后需要这样处理
var http = require("http");
http.createServer(server).listen(3000)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号