Node.js表示静态服务器挂起图像 - 仅限Chrome

 yyyy 发布于 2023-01-07 16:27

这是一个非常奇怪的错误,一直困扰着我多年.我有一个使用Express Static中间件的基本网站,以及渲染Jade的单独路由.

这是我的配置

app.set('views', __dirname + '/views');
app.set('view engine', 'jade');

app.use(stylus.middleware({
    src      : __dirname + '/public',
    dest        : __dirname + '/public',
    compile : function(str, path)
    {
        return stylus(str)
        .set('filename', path)
        .set('compress', true) 
        .use(nib())
    }
}));


app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
app.use(cookieParser())
app.use(session({ secret: conf.sessionSecret, 
                        store: new RedisStore(),
                        saveUninitialized: true,
                        resave: true
}));

app.use(express.static(__dirname + '/public'))

这是我的问题.在Chrome中的单个标签中精确刷新5次后,图片文件就会拒绝加载.所有其他内容都很好,只是图片和Chrome浏览器.为了解决这个问题,您必须打开一个新选项卡.我已经在Firefox中对此进行了测试 - 没有问题.这个错误不仅发生在这个应用程序中 - 它也发生在我的许多其他应用程序中.

由于这个项目目前正在开发中,我宁愿不以在线为例.请放心,这完全可以重现.有任何想法吗?

更新:我更新了Express 4,因为更新可能会解决我的问题.它没.您可以在此处看到我对此问题进行的屏幕演示.

更新:为了测试问题是否与静态服务器有关,我将代码修改为:

app.get('/img/*', function (req,res)
{
    console.log(req.url);
    console.log(path.extname(req.url));
    if (imgExt.indexOf(path.extname(req.url)) != -1)
    {
        res.sendfile('./public/'+req.url);
    }
});

app.use(express.static(__dirname + '/public'))

这没有任何影响,所以我认为这个问题无论是客户端还是Chrome的错误.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有