Elixir httpserver:priv_dir 返回 _build 目录中的内容,因此我无法发送源目录中的静态文件

问题描述 投票:0回答:0

我正在启动 Elixir,我目前正在开发一个基本的 Web 服务器/API。 我现在只使用

plug_cowboy
,因为我专注于学习基础知识。

服务器使用

plug :match
plug :dispatch
来回答各种
GET
请求。 在其中一个答案中,我正在尝试使用
send_file
函数发送 HTML 文件。

我的问题是服务器找不到文件,因为它不存在于应用程序搜索该文件的位置。

HTML文件位置:

lib/httpserver/priv/index.html
搜索路径:
_build/dev/lib/httpserver/priv/index.html

Router中有代码:

defmodule Httpserver.Router do
  use Plug.Router

  forward("/static", to: Httpserver.Static)

  plug :match
  plug :dispatch

  get "/" do
    priv_dir = :code.priv_dir(:httpserver)
    index_path = Path.join([priv_dir, "index.html"])
    send_file(conn, 200, index_path)
  end

  get "/:name" do
    send_resp(conn, 200, "Welcome, #{name} !")
  end

  match _ do
    send_resp(conn, 404, "Not found...")
  end
end

我试过:

  • 查看 ERLang 的文档
  • 看各种长生不老药论坛帖子
  • 查看一些旧的堆栈溢出帖子

我能找到的只是

start_permanent
build_embedded
函数中的
mix.exs
project
选项,并没有解决我的问题。

elixir webserver
© www.soinside.com 2019 - 2024. All rights reserved.