Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 15.02.2019
Сообщений: 20

Unexpected identifier или как говорит Firefox missing )

04.03.2021, 11:56. Показов 2236. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо проверить ссылки, и отсеять те что ничего не возвращают. При прямом переходе по ссылке показывает json массив. Его я получаю как .text(). Если просто вставить в консоль var rest = (await fetch('http://domain.com/29')).text(); всё работает замечательно, но когда пытаюсь прогнать свой список - эта команда не работает.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
var jsn = '[{"Id":"29","ImageURL":"http://domain.com/29"}]';
 
var data = JSON.parse(jsn);
 
data.forEach(function(v) {
        var rest = (await fetch(v.ImageURL)).text(); // тут ругается хром Unexpected identifier, мозила ругается так Expected ')' to match '(' from line 1 and instead saw 'fetch'.
        if (rest == "") {
            console.log("error");
        } else {
            console.log(rest);
        }
});
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.03.2021, 11:56
Ответы с готовыми решениями:

Синтаксис javascript: Unexpected identifier
Добрый день, впервые пишу на javascript помогите понять что тут неправильно написано? в соответствии с синтаксисом языка //Ядро...

Ошибка типа Unexpected identifier
Здравствуйте. Возникла ошибка при отправки письма с формы, при чем на всех сайтах с этой формой. В чем дело ? lead-stavcredit.com ...

Uncaught syntaxerror unexpected identifier
Доброго времени суток всем! Ситуация такая: создаю сайт на друпал7. Использую яндекс карты. На карты выводится множество полигонов(скриншот...

8
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
04.03.2021, 12:40
Допустим, это обработчик кнопки.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <input type="button" id="btn" value="Загрузить">
    <script>
        async function fetchTextAsync(url, init) {
            let response = await fetch(url, init);
            if (response.ok) {
                let text = await response.text();
                return text;
            }
            else
                throw new Error(`${response.status}: ${response.statusText}`);
        }
        let jsn = '[{"Id":"29","ImageURL":"http://domain.com/29"}]';
        let data = JSON.parse(jsn);
        document.getElementById("btn").onclick = btn_click;
 
        async function btn_click() {
            try {
                for (let v of data) {
                    let rest = await fetchTextAsync(v.ImageURL);
                    console.log(rest);
                }
            } catch (error) {
                console.log(error.message);
            }
        }
    </script>
</body>
</html>
Каждый обработчик кнопки является независимой ловушкой асинхронного кода, в которой надо писать try...catch.
Дальше обработчика кнопки уже нигде невозможно обработать ошибки от AJAX.
0
8 / 5 / 3
Регистрация: 30.04.2019
Сообщений: 24
04.03.2021, 13:22
Только в асинхронных функциях можно использовать await. Функция, передаваемая в цикл, не является таковой.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function fakeFetch(url) {
  const responses = {
    "http://domain.com/29": "imageUrl",
  }
  return Promise.resolve({
    text() {
      return responses[url];
    }
  });
}
 
var jsn = '[{"Id":"29","ImageURL":"http://domain.com/29"}]';
var data = JSON.parse(jsn);
 
// обратите внимание, перед ключевым словом function идет async 
data.forEach(async function(v) {
  var rest = (await fakeFetch(v.ImageURL)).text();
  console.log(rest);    // "imageUrl"
 
//   if (rest == "") {
//     console.log("error");
//   } else {
//     console.log(rest);
//   }
 
});
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
04.03.2021, 13:28
Цитата Сообщение от Eugene44 Посмотреть сообщение
Функция, передаваемая в цикл, не является таковой.
Это конкретная особенность forEach. Что приводит к отказу от использования данного метода, благо уже есть замена for of.
0
0 / 0 / 0
Регистрация: 15.02.2019
Сообщений: 20
04.03.2021, 14:08  [ТС]
Eugene44, Попробуйте с этим json, одна ссылка даёт массив другая нет
JavaScript
1
2
var jsn = '[{"Id":"29","ImageURL":"https://inventory.copart.io/v1/lotImages/26970690"},
{"Id":"30","ImageURL":"https://inventory.copart.io/v1/lotImages/29888231"}]';
0
8 / 5 / 3
Регистрация: 30.04.2019
Сообщений: 24
04.03.2021, 14:29
Лучший ответ Сообщение было отмечено Maksim4get как решение

Решение

Обратите внимание, что в данном примере используется не fetch, а fakeFetch, чтобы имитировать вашу задачу. Вам нужно использовать fetch.
Под новый json, в fakeFetch были внесены изменения, а именно был изменен объект responses. Код ниже работает: в консоль выводятся псевдо ссылки на картинки.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function fakeFetch(url) {
  const responses = {
    "https://inventory.copart.io/v1/lotImages/26970690": "imageUrl26970690",
    "https://inventory.copart.io/v1/lotImages/29888231": "imageUrl29888231"
  }
  return Promise.resolve({
    text() {
      return responses[url];
    }
  });
}
 
var jsn = `[
   {
      "Id":"29",
      "ImageURL":"https://inventory.copart.io/v1/lotImages/26970690"
   },
   {
      "Id":"30",
      "ImageURL":"https://inventory.copart.io/v1/lotImages/29888231"
   }
]`;
 
var data = JSON.parse(jsn);
 
data.forEach(async function(v) {
  var rest = (await fakeFetch(v.ImageURL)).text();
  console.log(rest);    
});
https://jsbin.com/qomowuguxa/edit?js,console
1
0 / 0 / 0
Регистрация: 15.02.2019
Сообщений: 20
06.03.2021, 13:07  [ТС]
Eugene44, Можно ли обойти ошибку URL scheme must be "http" or "https" for CORS request.
0
60 / 43 / 21
Регистрация: 05.11.2018
Сообщений: 53
06.03.2021, 13:36
Maksim4get, наверное вы попытались использовать fetch, передавая просто строку "imageUrl26970690" ( или "imageUrl29888231" ), а фетч начал искать у вас на компьютере файл "imageUrl26970690" ( или "imageUrl29888231" ), а CORS подобное запрещает. Вобщем, либо запускаете сервер, либо полностью прописываете путь к нужному файлу.
JavaScript
1
2
fetch("imageUrl29888231"); // Ошибка: фетч будет искать локальные файлы на вашем компьютере, а это запрещено CORS
fetch("https://www.yoursite.com/your/path/to/file"); // Правильно, если сайт разрешает конечно, иначе вылезет другая ошибка CORS: Access to fetch at from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
06.03.2021, 15:20
Цитата Сообщение от Maksim4get Посмотреть сообщение
Можно ли обойти ошибку URL scheme must be "http" or "https" for CORS request
AJAX позволяет скачивать локальный файл, если сама HTML-страница загрузилась с локального сервера.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <input type="button" id="btn" value="Загрузить">
    <script>
        async function fetchTextAsync(url, init) {
            let response = await fetch(url, init);
            if (response.ok) {
                let text = await response.text();
                return text;
            }
            else
                throw new Error(`${response.status}: ${response.statusText}`);
        }
        let jsn = `[
{"Id":"28","ImageURL":"notfound.json"},
{"Id":"29","ImageURL":"https://inventory.copart.io/v1/lotImages/26970690"},
{"Id":"30","ImageURL":"https://inventory.copart.io/v1/lotImages/29888231"},
{"Id":"31","ImageURL":"text.json"}
]`;
        let data = JSON.parse(jsn);
        document.getElementById("btn").onclick = btn_click;
 
        async function btn_click() {
            let array = [];
            for (let v of data) {
                try {
                    let rest = await fetchTextAsync(v.ImageURL);
                    if (rest == "") {
                        console.log("error");
                    } else {
                        console.log(rest);
                        array.push(v.ImageURL);
                    }
                } catch (error) {
                    console.log(error.message);
                }
            }
            console.log(array);
        }
    </script>
</body>
</html>
В данном скрипте отсекаются несуществующие файлы и пустые файлы.
В массив попадут "https://inventory.copart.io/v1/lotImages/29888231", "text.json"
которые существуют и непустые.
text.json у меня находится в корневой папке сайта рядом с файлом index.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.03.2021, 15:20
Помогаю со студенческими работами здесь

О чем говорит тот факт, что чужой капитал фирмы в 10 раз превышает собственный, при том долгов не имеется. Или это вообще не о чем не говорит?
кто-нибудь может объяснить, что в балансе вообще имеется ввиду под собственным капиталом и сторонним?

Ошибка C2146: syntax error: missing ';' before identifier 'KSPIN_LOCK'
Здравствуйте, уважаемые форумчане! помогите решить проблемку - программа не компилируется: Compiling resources... Compiling... ...

Ошибки Undeclared identifier: 'Edit1', Missing operator or semicolon
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; ...

Как с точки зрения квантовой физики объяснить, что когда человек говорит или думает правду, то он или другие чихают?
Как с точки зрения квантовой физики объяснить, что когда человек говорит или думает правду, то он или другие чихают? Вопрос серьёзный,...

Javascript error: Uncaught SyntaxError: Unexpected identifier
ввожу в скрипт код SQL запроса select ReceivingDateTime as 'Дата срабатывания', TextDecoded as 'Зона срабатывания' from inbox where...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru