具有节点js和express / ejs的站点并不总是加载图像

问题描述 投票:1回答:1

我建立了一个网站,该网站基本上使用Nodejs来获取图像,然后将其发送到ejs以显示在页面上,结果是有时会出现图像,有时看起来像是在加载图像之前加载了网站通过节点。我留下了我尝试过的两种方法,一种评论了,另一种是我尝试的最后一种。这是app.js

function retornaImagens(id){
let imagens= {
    assPacUrl: ''
}
/*
if (fs.existsSync(`${__dirname}\\arquivos\\consultas\\${id}\\assPac.png`)) {
    fs.readFile(
        `${__dirname}\\arquivos\\consultas\\${id}\\assPac.png`, 'base64',
        (err, base64Image) => {
            if (err) {
                console.log(err)
            } else {
                imagens.assPacUrl = `data:image/png;base64, ${base64Image}`
            }
        }
    )
}

*/

fs.access(`${__dirname}\\arquivos\\consultas\\${id}\\assPac.png`,(err)=>{
    if(err){}else{
        fs.readFile(
            `${__dirname}\\arquivos\\consultas\\${id}\\assPac.png`, 'base64',
            (err, base64Image) => {
                if (err) {
                    console.log(err)
                } else {
                    imagens.assPacUrl = `data:image/png;base64, ${base64Image}`
                }
            }
        )
    }
})

return imagens;
}

app.get('/consultas/:id/termo',(req,res)=>{
    var imagens = retornaImagens(req.params.id);

    Consulta.findOne({link:`/consultas/${req.params.id}/login`}).populate('medico paciente').exec((err,consulta)=>{
        if(err){
            console.log(err)
        }else{
            console.log(imagens)
            res.render('consulta/termo',{consulta:consulta,id:req.params.id,imagens})
        }
    })
})

这是ejs文件

<img src="<%= imagens.assPacUrl %>">

如果您有一些使代码更整洁并占用更少内存的提示,请给我。

node.js image express ejs fs
1个回答
0
投票
问题在于加载时间,加载图像花费了更长的时间,因此程序继续进行,并使网站空白,并添加了settimeOut。

function enviaTermo(data){ Consulta.findOne({link:data.link}).populate('medico paciente').exec((err, consulta) => { if (err) { console.log(err) } else { console.log(imagens) io.to(consulta._id).emit('termo', { consulta: consulta, imagens: imagens }) } }) } setTimeout(() => { enviaTermo(data) }, 450);

© www.soinside.com 2019 - 2024. All rights reserved.