gpt4 book ai didi

phoenix-framework - 如何将 Elixir 依赖项导入当前文件/模块

转载 作者:行者123 更新时间:2023-12-03 15:15:09 24 4
gpt4 key购买 nike

我正在尝试使用 Hex 打包的 CSV。

我将依赖项添加到 mix.exs 中,如下所示:

  def application do
[applications: [:logger, :csv]]
end

defp deps do
[
{:csv, "~> 1.4.2"}
]

然后,我运行 mix deps.get & mix deps.compile在终端。

依赖文件夹显示在 deps 文件夹中。

在我尝试使用依赖项之前,一切似乎都很好。我收到此错误:

"module CSV is not loaded and could not be found"



我试过一个简单的使用而不像这样导入:
File.stream!("data.csv") |> CSV.decode

我试过像这样导入:
import(CSV)
File.stream!("data.csv") |> CSV.decode

我试过为 deps 目录添加前缀:
import(deps.CSV)
File.stream!("data.csv") |> CSV.decode

以及 deps 子目录的完整路径:
import(deps.csv.lib.csv.CSV)
File.stream!("data.csv") |> CSV.decode

无论如何它似乎都找不到依赖模块。

我错过了什么?

最佳答案

我猜你的IDE配置错误。这是一个如何启动和运行的命令行示例。

mix new csv_tester
cd csv_tester
# edit mix.exs to add {:csv, "~> 1.4"} to your deps, like you have above
mix deps.get
iex -S mix
iex(1)> [["name", "age"], ["Bob Saget", 64]] |> CSV.encode() |> Enum.join("")
"name,age\r\nBob Saget,64\r\n"
模块可全局访问,因此您无需使用 import语句,除非您只想要给定模块中的特定函数,或者您不想用模块名称完全限定函数调用。见 import文档。
您可以在 iex 中执行的任何操作您应该可以从项目中的任何其他模块调用
如果您仍然需要调试帮助,您可以在 iex 中运行它以列出所有应该在运行时可用的模块,然后过滤模块名称中包含 CSV 的任何内容:
iex(1)> :code.get_path() |> 
Enum.map(&to_charlist/1) |>
Enum.map(&:erl_prim_loader.list_dir/1) |>
Enum.map(&elem(&1, 1)) |>
Enum.concat() |>
Enum.map(&to_string/1) |>
Enum.filter(fn module -> module =~ "CSV" end)
哪个应该输出这样的东西
["Elixir.CSV.Encode.beam", "Elixir.CSV.Encoder.beam", "Elixir.CSV.beam",
"Elixir.CSV.Lexer.EncodingError.beam", "Elixir.CSV.LineAggregator.beam",
"Elixir.CSV.Parser.beam", "Elixir.CSV.Lexer.beam",
"Elixir.CSV.Encode.BitString.beam",
"Elixir.CSV.LineAggregator.CorruptStreamError.beam", "Elixir.CSV.Decoder.beam",
"Elixir.CSV.Decoder.RowLengthError.beam", "Elixir.CSV.Encode.beam",
"Elixir.CSV.Parser.SyntaxError.beam", "Elixir.CSV.Encode.Any.beam",
"Elixir.CSV.Defaults.beam"]

关于phoenix-framework - 如何将 Elixir 依赖项导入当前文件/模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39482267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com