ReferenceError:图片未定义

时间:2019-05-25 15:26:41

标签: javascript html image constructor

我正在尝试创建一个网站,其中包含通过链接提供的图像。如果图像不存在或只有1像素宽,则网站应显示替代图像。我正在使用Jade / Pug和JS。

在将链接呈现在网站上之前,我会尝试先列出链接列表。这样,我就可以迭代然后将链接列表扔到.pug文件中。 所以我想做的是仅使用JS检查图像是否具有特定大小。如果是这样,我将链接添加到我的列表中,否则,我添加一个替代链接。

这是我的app.js文件中代码的重要部分:

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个小时不间断,因此我试图解决这个问题,而我无法使其正常工作。

1 个答案:

答案 0 :(得分:0)

您正在混合nodejsjavascript。您的代码为nodejs,因此位于服务端。 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'}`);
});

注意

没有类似“愚蠢的问题”的东西:=)