我正试图使一个网站,其中我包括通过链接的图像。如果图像不存在,或者只有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小时不间断,我不能得到它的工作。
2条答案
按热度按时间hujrc8aj1#
你把
nodejs
和javascript
弄混了。您的代码是nodejs
,因此位于sererside。window
和Image
仅在浏览器中可用。在客户端。用于检查文件是否存在,(仅在服务器端!=)可以使用
fs
=> fs. access。注意事项
没有什么像“愚蠢的问题”:=)
tv6aics12#
值得一提的是,Canvas npm包允许您根据需要使用Image构造函数。我发现在某些情况下这是必不可少的,比如在服务器端图像处理中。
https://www.npmjs.com/package/canvas
npm install canvas