Проблемы с package.path в CoronaSDK

Мы хотим объединяться, модуль третьего лица Луы (говорят) foo в наше заявление CoronaSDK.

Главный код этого модуля модуля находится в foo/init.lua , чтобы требоваться, поскольку требуют 'foo' .

Мы поместили этот модуль в corona/foo :

corona/foo$ ls
  init.lua

В corona/main.lua мы имеем:

package.path = package.path .. ";"
  .. package.path:gsub("?.lua", "?/init.lua")

require 'foo' works in the simulator. However, it does not work on the device:

Lua Runtime Error: lua_pcall failed with status: 2, error message is:
module 'foo' not found:resource (foo.lua) does not exist in
archive
  no field package.preload['foo']
  no file '/var/mobile/Applications/0B609A43-54E8-40E5-9D44-F3C93CC4031E/Appname.app/foo.lua'
  no file '/var/mobile/Applications/0B609A43-54E8-40E5-9D44-F3C93CC4031E/Appname.app/foo.lua'
  no file '/var/mobile/Applications/0B609A43-54E8-40E5-9D44-F3C93CC4031E/Appname.app/foo/init.lua'
  no file '/var/mobile/Applications/0B609A43-54E8-40E5-9D44-F3C93CC4031E/Appname.app/foo/init.lua'
  no file './foo.so'

Странно достаточно, требуют, чтобы 'foo.init' действительно работал.

Какие-либо подсказки?

1
nl ja de
Возможно, что Корона использует обычай package.loaders действительно.
добавлено автор Alexander Gladysh, источник
That' s очень странное поведение. Если foo.init работы, то теоретически foo должен работать также если ? / init.lua находится в вашем пути пакета, который это, кажется, обозначено выводом ошибок. Как foo установка модуля; это возвращает стол, или это использует модуль ()? Действительно ли возможно, что Корона использует обычай package.loaders ? Вы попытались создать минимальный тестовый сценарий, который воспроизводит эту проблему?
добавлено автор Ryan Stein, источник
Как foo установка модуля; это возвращает стол, или это использует модуль ()? ни один, модуль просто выполняет некоторый код, возможно, что Корона использует обычай package.loaders? docs.coronalabs.com/api/library/package/loaders.html Вы попытались создать минимальный тестовый сценарий, который воспроизводит эту проблему? да
добавлено автор Mihail Nazarov, источник

2 ответы

Ваше имя файла

foo.lua или Foo.lua?

это работает над симулятором для обоих случаев, но в устройствах, капитальных вопросах.

У меня был этот кошмар (Интересно, почему мой клиент SVN изменил капитал для одного из моих файлов... Я провел более чем час, чтобы узнать то, что пошло не так, как надо, потому что мой модуль не мог быть внезапно найден в устройстве),

1
добавлено
4 года, и все еще полезный …
добавлено автор Crazyrems, источник

Попробуйте это

package.path = package.path..""; .. пакет path:gsub ("? .lua", "? .init.lua")

пути для lua файлов, названных в пакетах, должны быть сделаны как это:

dir.luafile.lua

вместо dir/luafile.lua

надежда, которая помогает

1
добавлено
package.path должен использовать системные сепараторы пути, не . .
добавлено автор Alexander Gladysh, источник
Спасибо, но этот код не работает также
добавлено автор Mihail Nazarov, источник
pro.lua
pro.lua
411 участник(ов)

Правила: Тут можно обсуждать все, что связанно с луа-движки, интерпретаторы/компиляторы, питухан-биндинги, скрипты на сталкер и пр. Запрещена реклама! Срачи и оффтоп не желательны. За нарушение - бан github.com/rjpcomputing/luaforwindows Участник @ProDOT