Сломалось проксирование модулей c amperka.ru на espruino.com

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем hhhirnr, 22 ноя 2018.

  1. hhhirnr

    hhhirnr Нуб

    Пытаюсь заставить работать модуль wi-fi от Амперки @amperka/wifi. Особенность в том, что внутри себя он использует модуль AT.
    Модуль wifi расположен на сервере Амперки:
    https://github.com/amperka/espruino-modcat/blob/master/modules/@amperka/wifi.js

    Зависимый от него модуль AT расположен на серере espruino:
    http://www.espruino.com/modules/AT.js

    В настройках WebIDE (Window-версия) ставлю как написано у вас в wiki:
    Communications -> Module url: http://js.amperka.ru/modules
    Communications -> JavaScript Compiler URL: https://www.espruino.com/service/compiler
    Board -> Board JSON URL: http://js.amperka.ru/json

    Пробую заставить работать вот этот код:

    Код (Javascript):
    // Настраиваем интерфейс UART
    PrimarySerial.setup(115200);
    // логин и пароль WiFi-сети
    var SSID = 'Amperka.ru';
    var PSWD = 'iskraJS';
    var wifi = require('@amperka/wifi').setup(PrimarySerial, function(err) {
      // подключаемся к Wi-Fi сети
      wifi.connect(SSID, PSWD, function(err) {
        print('Connected');
        // Выполняем запрос
        require('http').get('http://amperka.ru', function(res) {
          var response = '';
          res.on('data', function(d) { response += d; });
          res.on('close', function() { print(response); });
        });
      });
    });
    В результате выводит в Module 'AT' not found:
    Код (Javascript):
    WARNING: Module "AT" not found
    Uncaught Error: Field or method "connect" does not already exist, and can't create it on undefined
    at line 1 col 88
    ...ESP8266.at=at=require("AT").connect(a),require("NetworkJS")....
                                  ^
    in function "setup" called from line 19 col 2
    });
    ^
    =undefined
    Когда заменяю в настройках IDE Communications -> Module url: на http://www.espruino.com/modules выводит уже Module @amperka/wifi not found.
    Код (Javascript):
    >ERROR: SD card must be setup with E.connectSDCard first
    WARNING: Module "@amperka/wifi" not found
    Uncaught Error: Field or method "setup" does not already exist, and can't create it on undefined
    at line 9 col 36
    ... = require('
    @amperka/wifi').setup(PrimarySerial, function(er...
                                  ^
    =undefined
    С этим же путем до модулей пробую слудующий код:

    Код (Javascript):
    var a = require('AT');
    console.log(a);
    Ошибок нет. Меняю Module path на амперковский http://js.amperka.ru/modules
    и снова
    Код (Javascript):
    Module "AT" not found.
    Из этого делаю вывод, что не работает проксировакние отсутствующих модулей с вашего репозитария на репозитарий espruino. Почините пожалуйста!

    Версия прошивки: 1v92.194
     
  2. sys

    sys Злобный Буратино Модератор

    Да уж, смотрю у всё большего числа пользователей возникает проблема с невосприниманием IDE модулей с разных ресурсов...

    Попробуйте, как временное решение, в настройках IDE в Communications -> Module URL указать http://jsff.ru/modules/ ...

    Я пока разместил копии модулей с разных ресурсов в одном месте.... возможно, позже настрою автообновление на время, пока Амперке удастся разрулить данную ситуацию...
     
    hhhirnr и ИгорьК нравится это.
  3. ZAZ-965

    ZAZ-965 Гуру

    Меня смущает эта строка
    Код (C++):
    >ERROR: SD card must be setup with E.connectSDCard first
    На гитхабе есть похожая проблема https://github.com/espruino/EspruinoWebIDE/issues/116 связанная с рекурсивными зависимостями
     
  4. sys

    sys Злобный Буратино Модератор

    Такое сообщение об ошибке возникает если в IDE модуль из Интернета (или из локальной папки проекта) не доступен, и тогда IDE не подменяет в коде require на содержимое модуля, а в плату прошивается код с require и интерпретатор пытается считать модуль с SD карты - и если SD карта с модулем не подключена, то выдается ошибка.
     
    ZAZ-965 нравится это.
  5. hhhirnr

    hhhirnr Нуб

    О, добрый человек, спасибо!!
    А оно точно работает? По http://jsff.ru/modules/ выдаёт 403 ошибку.
    Если кинетесь файлами, могу у себя где-нибудь их разместить...
     
  6. sys

    sys Злобный Буратино Модератор

    Это политика просмотра папок по умолчанию. Проверить работоспособность можно указав полный путь к библиотеке - например, http://jsff.ru/modules/AT.js или http://jsff.ru/modules/@amperka/wifi.js
    список тот же что и у оффициальных источников...
    если не доверяете, то можете скачать сами нужные библиотеки и разместить вообще локально. Как? Есть описание в теме ЧаВо данного раздела ;)
     
  7. Trem

    Trem Нерд

    Есть еще вариант с локальным расположением модулей.
    В настройках IDE настроить все по умолчанию на Espruino.
    Потом в setting->Project указать локальную папку (например D:\JS)
    А дальше закинуть необходимые Амперка модули в D:\JS\modules и убрать @amperka оставив var wifi = require('wifi')…….
     
  8. hhhirnr

    hhhirnr Нуб

    Понял, спасибо большое! Заработало!

    Так можно просто разместить их локально? Даже без сервера? не знал об этом, спасибо!
     
  9. sys

    sys Злобный Буратино Модератор

    Тогда придется проверить все модули амперки на наличие в них своих зависимостей и в них тоже убрать @amperka из пути