javascript 参考错误:未定义图像

nnsrf1az  于 2023-06-28  发布在  Java
关注(0)|答案(2)|浏览(126)

我正试图使一个网站,其中我包括通过链接的图像。如果图像不存在,或者只有1像素宽,网站应该显示替代图像。我使用Jade/Pug和JS。
我试着事先做一个链接列表,然后在网站上呈现它们。这样我就可以迭代把我的链接列表扔到.pug文件中。所以我想做的是,检查,如果一个图像有一定的大小,只使用JS。如果有,我就把链接添加到列表中,如果没有,我就添加一个替代链接。
这是我在app.js-file中代码的重要部分:

app.get("/", function (req, res) {
    //get all the books
    var isbns = [];
    var links = [];
    dbClient.query("SELECT isbn FROM book WHERE id < 20", function (dbError, dbItemsResponse){
        isbns = dbItemsResponse.rows;
        var linkk = 0;
        for(i=0;i<20;i++){
            linkk = "http://covers.openlibrary.org/b/isbn/" + Object.values(isbns[i]) + "-M.jpg";
            var wid = getMeta(linkk);
               if(wid < 2){
                    links[i]="https://i.ibb.co/7JnVtcB/NoCover.png";
                } else {
                    links[i]=linkk;
                }
            }

    });
});

function getMeta(url){   
    var img = new Image(); //or document.createElement("img");
    img.onload = function(){
        alert(this.width);
    };
    img.src = url;
}

这给了我一个ReferenceError:未定义Image()。如果我尝试使用document.createElement(“img”);它显示“文档未定义”。如何在服务器端检查图像是否存在?或者如何在app.js文件中使用Image-Constructor?不使用我的Jade/Pug/HTML文件。对不起,如果这是一个愚蠢的问题,但我试图弄清楚这一点,因为20小时不间断,我不能得到它的工作。

hujrc8aj

hujrc8aj1#

你把nodejsjavascript弄混了。您的代码是nodejs,因此位于sererside。windowImage仅在浏览器中可用。在客户端。
用于检查文件是否存在,(仅在服务器端!=)可以使用fs => fs. access。

var fs = require("fs");
// Check if the file exists in the current directory.
fs.access(file, fs.constants.F_OK, (err) => {
  console.log(`${file} ${err ? 'does not exist' : 'exists'}`);
});

注意事项

没有什么像“愚蠢的问题”:=)

tv6aics1

tv6aics12#

值得一提的是,Canvas npm包允许您根据需要使用Image构造函数。我发现在某些情况下这是必不可少的,比如在服务器端图像处理中。
https://www.npmjs.com/package/canvas
npm install canvas

import { Image } from "canvas";

const img = new Image;

相关问题