Lua скрипты теряют конфигурацию среды (?)

Страницы: 1
RSS
Lua скрипты теряют конфигурацию среды (?)
 
Время от времени скрипты Lua при загрузке внешних модулей начинают сыпать ошибки что модуль не найден, хотя он не был затронут и работал за минуту до этого. Чтобы исправить нужно удалить скрипт и добавить заново, что довольно неприятно.

Я имею опыт программирования С/С++ API для Lua но я понятия не имею как такая ошибка может получиться. Быстрый и грязный способ исправить это переустанавливать скрипт под капотом при каждом запуске.
 
Внешний модуль случаем не на сетевом диске находится?
 
Нет. Скрипт лежит в папке QUIK, модуль в той же папке.
 
Вот на вашу проблему очень похоже https://forum.quik.ru/forum10/topic103/
 
Я нашел в чём проблема. При добавлении скриптов QUIK меняет рабочую директорию на директорию скрипта. В результате чего, с одной стороны элемент package.path который загружает модули из текущей директории перестаёт функционировать (но дублируется элементом с абсолютным путём), а с другой стороны создаёт иллюзию что у каждого скрипта есть своя личная рабочая директория из которой будут подгружаться модули, а не только из корня QUIK.
Код
test.lua 
    message ( string.format ( "%s = \n%s, getScriptDirectory(), io.popen("cd"):read() ) )
Код
Добавляем скрипты:
C:/QUIK/1/test.lua
C:/QUIK/2/test.lua
C:/QUIK/3/test.lua

Запускаем скрипты в любом порядке. Программный вывод:
C:/QUIK/1 => C:/QUIK/3
C:/QUIK/2 => C:/QUIK/3
C:/QUIK/3 => C:/QUIK/3
Перезапускаем QUIK, запускаем скрипты в любом порядке:
C:/QUIK/1 => C:/QUIK
C:/QUIK/2 => C:/QUIK
C:/QUIK/3 => C:/QUIK
Страницы: 1
Читают тему
Наверх