这是我的第一篇文章,因此请简洁起见。我正在学习Crystal,并尝试包含一个与另一个路径中的另一个文件具有共享名称的文件。根据{{3}},我可以使用require "path/to/modules/"
并在其中包含所有文件,但是当我这样做时,我又使用了导入的类,它告诉我该类不存在...
文档中的所有内容似乎都无效。是否需要一些插件模块才能使路径正常工作,还是我误会了某些东西或语法有误?
这是我的代码(使用主页上的示例)
require "http/server"
require "modules/HttpRequest"
server = HTTP::Server.new do |context|
context.response.print(request.result)
end
server.listen(80)
文件HttpRequest.cr
位于/modules/
中。
我得到的错误
Error in Server.cr:2: while requiring "modules/HttpRequest": can't find file 'modules/HttpRequest'
If you're trying to require a shard:
- Did you remember to run `shards install`?
- Did you make sure you're running the compiler in the same directory as your shard.yml?
require "modules/HttpRequest"
^
答案 0 :(得分:4)
使用require "modules/HttpRequest"
将根据require rules在modules/HttpRequest
中查找CRYSTAL_PATH
。
要要求相对于当前文件的文件,您需要使用require "./modules/HttpRequest"
。