ReferenceError: изображение не определено - PullRequest
0 голосов
/ 25 мая 2019

Я пытаюсь создать сайт, на котором я размещаю изображения по ссылкам. Если изображение отсутствует или имеет ширину всего 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"); он говорит, что «документ не определен». Как я могу проверить на стороне сервера, существует ли изображение? Или как я могу использовать Image-Constructor в моем файле app.js? Без использования моего файла Jade / Pug / HTML никоим образом. Извините, если это глупый вопрос, но я пытаюсь понять это с 20 часов без перерыва, и я не могу заставить его работать.

1 Ответ

0 голосов
/ 25 мая 2019

Вы смешиваете nodejs и javascript.Ваш код nodejs и, следовательно, на sererside.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'}`);
});

Примечание

Нет ничего похожего на "тупой вопрос": =)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...