我正在尝试创建一个网站,其中包含通过链接提供的图像。如果图像不存在或只有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个小时不间断,因此我试图解决这个问题,而我无法使其正常工作。
答案 0 :(得分:0)
您正在混合nodejs
和javascript
。您的代码为nodejs
,因此位于服务端。 window
和Image
仅在浏览器中可用。在客户端。
要检查文件是否存在(仅在服务器端!=),可以使用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'}`);
});
没有类似“愚蠢的问题”的东西:=)