странный глюк с модулем в запуске

Поддержка
  • Создал свой модуль.
    В нем набор действий - получение фингера и фильтры.
    В этом же проекте запускаю этот модуль в режиме запуска - все четко отрабатывает.

    Создаю другой проект, и использую этот модуль:

    1. первое в режиме записи прекрасно отрабатывает.
    2. в запуске ни в какую не хочет ошибка типо:
      Произошла ошибка : ReferenceError: Can't find variable: JPath
      При этом я такой переменную не использую. И это на действии парсинга фингера на волидность. Json из фингера по полю volid - d записи отрабатывает прекрасно.

    Что за чехорда ? то работаю то нет, в этом работаю в другом не хочу, в записи работаю а в запуске нет ... Как найти причину ?

    Версия БАСА последняя - 26.0.2

  • @DuckDuck said in странный глюк с модулем в запуске:

    в записи работаю а в запуске нет

    В режиме записи переменные становятся глобальными, а в режиме запуска - нет. Может быть отсюда ноги растут. Вообще, похоже на кривую реализацию парсинга JSON.

    P.S.
    в репозитории BAS какая-то движуха, связанная как раз с JSON модулем.

  • @sergerdn В другом то проекте в котором модуль и создавал и в запуске собранный модуль работает как часы. Парсинг json самый простой:
    Screen Shot 2023-07-25 at 18.32.07.png

  • @DuckDuck said in странный глюк с модулем в запуске:

    @sergerdn В другом то проекте в котором модуль и создавал и в запуске работает как часы.

    Парсинг JSON == Парсинг JSON встроенным модулем BAS. Вероятно, там баг.

  • @DuckDuck, @GhostZ said in Поток завершился с сообщением "ReferenceError: Can't find variable: JPath":

    Модуль не устанавливается т.к BAS считает что он не используется, потому что действия модуля не используются, а используются только функции. Используете любое действие JSON модуля в скрипте и проблем быть не должно.

    Решение тут

  • @GhostZ похоже на то, уже ловил примерно такую штуку, когда логер встраивал в свой модуль. ни в какую в запуске не хотел, пока не добавил одно действие перед с использованием логера.

  • @GhostZ Да, так и есть, спасибо тебе большое, пойду вникать в твое решение.
    Просто добавил действие json парс перед вызовом модуля и все пошло.
    А в монифесте видел зависимости, может там как то надо прописать ?

  • @DuckDuck, @GhostZ said in Лайфхаки BAS:

    Так как на данный момент в модулях BAS не работают зависимости

  • @GhostZ said in странный глюк с модулем в запуске:

    Так как на данный момент в модулях BAS не работают зависимости, то я придумал способ использовать модули (которые устанавливаются только при использовании, строка, путь и т.д) в других модулях, без необходимости использовать дополнительные действия.

    Нужно добавить /Dat:eyJzIjoiaXNfc3RyaW5nIn0=/ в code.js файлы действий, eyJzIjoiaXNfc3RyaW5nIn0= - это закодированная в base64 строка {"s":"is_string"}, is_string - это имя любого действия нужного модуля (можно найти в manifest.json файле модуля).

    Этот код нужно добавлять только в те действия которые зависят от других модулей.

    Пример модуля использующего действие модуля "Строка": TestModule.zip
    Тестовый проект: depends.xml

    Что то я не совсем понял

    is_string - это имя любого действия нужного модуля (можно найти в manifest.json файле модуля).

    Скачал твой пример модуля - и в файле манифест нету такого имени is_string.
    При этом строку раскодировал и у тебя там именно is_string - это ты откуда берешь ?

  • @DuckDuck, имя действия из модуля "Строка", модуль функции которого используются

  • @GhostZ в моем случае с json_parse как то должно называться ?
    Все равно туплю.

    Кажется понял, это надо зайти в модуль json и в нем посмотреть как он называется, то есть это имя вызываемого вложенного модуля.

  • @GhostZ
    так, чето я совсем запутался.
    Пошел я в модуль JSON. Открыл манифест, нашел имя действия
    Screen Shot 2023-07-25 at 19.57.53.png
    Так ?

    закодировал
    Screen Shot 2023-07-25 at 19.59.29.png

    сформировал строку:

    /*Dat:IHsicyI6Impzb25fcGFyc2VfdmFsdWVfY29kZSJ9*/
    

    и вставил в файлы первой строкой которые заканчивают на code.js
    у меня три файла, три функции, во всех этот модуль используется.

    Но ничего не сработало, - где ошибся ?

    И еще вопрос, а если две зависимости + модуль loger
    то как два добавить ?

    PS:
    это имя тоже попробовал не хочет он работать
    Screen Shot 2023-07-25 at 20.18.36.png