首页 > 解决方案 > Crystal 模块路径需要问题

问题描述

这是我的第一篇文章,所以请原谅简洁。我正在学习水晶并尝试包含一个与另一个路径中的另一个文件具有共享名称的文件。根据文档,我可以使用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"
^

标签: crystal-lang

解决方案


使用会根据需要的规则require "modules/HttpRequest"查找modules/HttpRequestCRYSTAL_PATH

要要求相对于当前文件的文件,您需要使用require "./modules/HttpRequest".


推荐阅读