В течение последних двух недель я работал с моим проектом с участием, по меньшей мере, тысячи строк кода, поэтому я был бы очень раздражен, если бы не смог заставить это работать ,Почему относительная траектория Lua настолько ужасна? (help w/require)
Я использую среду Luvit на сервере Ubuntu 16.04 Server VPS, используемом для размещения моего проекта. Это изображение моего текущего дерева файла
Я в настоящее время внутри (с помощью команды кд) папки WrapperTest и запустив файл main.lua. Для этого требуется файл сервера в сети/сокете.
По какой-то причине кажется, что Lua меняет путь к файлу каждый раз, когда я переключаю файлы. Это очень раздражает меня, так как в сети этот проект ДОЛЖЕН, и мои файлы даже не могут обнаружить встроенные модули.
С Luvit он предоставляет множество встроенных модулей, таких как coro-http
, которые, как вы догадались, предоставляют поддержку HTTP для Lua. Почему так, как только мне нужен другой файл, я вдруг не могу обнаружить нормальные модули, и весь путь к файлу меняется. На самом деле это действительно подтачивает меня, и я бы хотел поддержать поддержку, поскольку этот проект стал кульминацией моего свободного времени. Я предоставлю больше информации, если кто-нибудь попросит об этом, поскольку я знаю, что я расплывчатый.
Edit: Когда я require 'main'
в WrapperTest, успешно requires
WrapperTest/net/socket/server
. Этот файл сервера зависит от «discordio.lua» в пределах WrapperTest/net/
. Для «discordio.lua» требуется файл в в том же каталоге, который называется http-lib
с указанием пути require "net/http-lib"
. В первой строке http-lib's
требуется модуль под названием coro-http
, который встроен в интерпретатор Лувита. Это не по какой-то странной причине, и я не могу понять, почему.
Стек трассировка (неофициальная, так как это ошибка Luvit, не чисто Lua):
[string "bundle:deps/require.lua"]:278:
No such module 'net/discordio' in '/usr/local/WrapperTest/net/socket/server.lua'
./net/http-lib.lua:1: module 'coro-http' not found:
Чтобы помочь уменьшить неопределенность и лучше проиллюстрировать, вы можете также добавить простой пример на вопрос ? например. когда вы «требуете» xyz'', он не может «требовать» different_path.some_module''поверхности или что-то в этом роде. Также добавьте сообщения об ошибках/stacktrace, которые вы получаете. – greatwolf
Done @greatwolf – Cryogenic
Если 'coro-http' является частью интерпретатора Luvit, то это не« проблема относительного пути ». Это проблема с вашим переводчиком Luvit. Вы должны быть в состоянии потребовать его из любого места, если Luvit зарегистрировал этот модуль с системой должным образом. –