- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
偶尔,当我在 Elixir 代码中输入错误时,会出现 CompileError
发生这种情况,即使我修复了所有问题,Phoenix 也拒绝实时重新加载,并继续打印 App.Endpoint.path/1 is undefined
( App
是我的应用程序)。当然,端点定义得非常好,并且一旦我重新启动就可以再次工作 mix phoenix.server
.
据我所知,我使用的都是最新版本。由于我在网上找不到有关此错误的任何信息,因此我怀疑我配置了某些错误,并且非常感谢您就如何追查问题根源的建议。
[info] Sent 200 in 200ms
iex[debug] Live reload: web/resolver/reviewer.ex
[debug] Live reload: web/resolver/reviewer.ex
Compiling 20 files (.ex)
== Compilation error on file web/resolver/reviewer.ex ==
** (Ecto.Query.CompileError) unbound variable `f` in query
(ecto) expanding macro: Ecto.Query.preload/3
(app) web/resolver/reviewer.ex:519: App.Resolver.Reviewer.sc_data/1
(elixir) expanding macro: Kernel.|>/2
(app) web/resolver/reviewer.ex:520: App.Resolver.Reviewer.sc_data/1
(elixir) lib/kernel/parallel_compiler.ex:116: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/1
[error] #PID<0.2279.0> running App.Endpoint terminated
Server: localhost:4000 (http)
Request: GET /reviewers/2016/1234
** (exit) an exception was raised:
** (UndefinedFunctionError) function App.Endpoint.path/1 is undefined (module App.Endpoint is not available)
(app) App.Endpoint.path("/phoenix/live_reload/frame")
(phoenix_live_reload) lib/phoenix_live_reload/live_reloader.ex:115: Phoenix.LiveReloader.reload_assets_tag/1
(phoenix_live_reload) lib/phoenix_live_reload/live_reloader.ex:97: anonymous fn/1 in Phoenix.LiveReloader.before_send_inject_reloader/1
(elixir) lib/enum.ex:1623: Enum."-reduce/3-lists^foldl/2-0-"/3
(plug) lib/plug/conn.ex:909: Plug.Conn.run_before_send/2
(plug) lib/plug/conn.ex:355: Plug.Conn.send_resp/1
(phoenix) lib/phoenix/code_reloader.ex:50: Phoenix.CodeReloader.call/2
(app) lib/app/endpoint.ex:1: App.Endpoint.phoenix_pipeline/1
(app) lib/plug/debugger.ex:93: App.Endpoint."call (overridable 3)"/2
(app) lib/app/endpoint.ex:1: App.Endpoint.call/2
(plug) lib/plug/adapters/cowboy/handler.ex:15: Plug.Adapters.Cowboy.Handler.upgrade/4
(cowboy) src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4
[error] Ranch protocol #PID<0.2281.0> (:cowboy_protocol) of listener App.Endpoint.HTTP terminated
** (exit) killed
Compiling 20 files (.ex)
== Compilation error on file web/resolver/reviewer.ex ==
** (Ecto.Query.CompileError) unbound variable `f` in query
(ecto) expanding macro: Ecto.Query.preload/3
(app) web/resolver/reviewer.ex:519: App.Resolver.Reviewer.sc_data/1
(elixir) expanding macro: Kernel.|>/2
(app) web/resolver/reviewer.ex:520: App.Resolver.Reviewer.sc_data/1
(elixir) lib/kernel/parallel_compiler.ex:116: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/1
^C
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
最佳答案
看来 Phoenix 的实时重新加载功能是 Endpoint
的一部分,因此一旦后者崩溃,代码重新加载就不再起作用。
通过在属于端点的代码中插入错误,例如,可能会导致端点崩溃。通过添加 plug :some_imaginary_plug
或在 router.ex
中引起语法错误,因为路由器也插入了 Endpoint。
现在,事实证明我正在使用 Absinthe通过forward
将所有/graphql
请求直接打包到苦艾酒插件。因此,任何 GraphQL 类型定义和相关的解析器函数(恰好构成了我的应用程序的大部分)都是脆弱的:任何不明显的编译错误(但不可避免) )导致端点崩溃。
我发现的最佳解决方法是使用 iex -S mix phoenix.server
启动服务器,直到 Absinthe 开发人员设法使解析器独立于类型定义(他们建议这样做) code>,并在端点崩溃时手动运行重新编译
。虽然这并不能解决 CodeReloader 作为 Endpoint 的一部分的根本问题,反之亦然,但它使我不必每次都重新运行 webpack,这是最大的痛点。
关于elixir - Phoenix 实时重新加载因编译错误而中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38709444/
我正在尝试从模板中的列表( )中提取值,但出现此错误: lists in Phoenix.HTML and templates may only contain integers represent
我正在阅读 Programming Phoenix 这本书,一切都很好,直到第 44 页要求我重新启动 Phoenix 服务器。 我用双 Ctrl + C 杀死了当前服务器,但是当我尝试再次运行 mi
我的应用程序和 api json 请求以及常规 html 都可以工作。我的路由器.ex defmodule MyApp.Router do use MyApp.Web, :router pip
我想在模板中将对象呈现为 JSON。我试过: 但是我得到一个错误 protocol Phoenix.HTML.Safe not implemented for %Ecto.Changeset{...
在 phoenix 框架的 View 中,在 div 元素内生成两个 span 元素的方法是什么? 最佳答案 为了做到这一点,可以只使用一个数组并将其作为 div 标签的值传递给内部,如下所示: de
我从 Rails 迁移,并希望这能在我的模板中工作? hello world 似乎没有一个条件得到呈现。如何实现这一目标? 谢
完成示例指南。本章中详细介绍的内容在我的应用程序中不起作用。看起来很简单的事情。我有一个视频模型: defmodule Rumbl.Video do use Rumbl.Web, :model
完成示例指南。本章中详细介绍的内容在我的应用程序中不起作用。看起来很简单的事情。我有一个视频模型: defmodule Rumbl.Video do use Rumbl.Web, :model
通过可选“inputs_for”输入的 Phoenix 嵌套表单导致 Controller 中的 map 无法通过验证。例如,一个帖子有评论。如果我想在创建帖子时为帖子添加评论,嵌套表单将如下所示:
我正在尝试在应用程序中实现不同的语言。所以我所做的是在 Session 的 db 中创建了 lang 变量,它保留了当前选择的语言。 问题是我正在通过更新操作调用和更新值: def update(co
我想在我的网站上实现一个典型的“记住我”功能,它需要一种方法来创建在遥远的 future 过期的 cookie。有没有办法在 Phoenix Framework 中创建它们? 最佳答案 只要给 coo
我正在制作一个多站点应用程序。我想在测试 Controller 之前在连接上设置请求主机。在 Rails 中,我们可以使用 before :each do request.env["HTTP_RE
我知道我可以通过包含以下内容来更新实时取景: if connected?(socket), do: :timer.send_interval(10000, self(), :click) 但是,有没有
Ruby on Rails 带有终端命令 rake routes . Phoenix 有类似的吗? 最佳答案 命令是 $ mix phoenix.routes 关于phoenix-framework
我正在尝试使用 addict包以在我的项目中进行身份验证,但是每当我尝试执行操作(注册、登录...)时,我的 POST 都会出现 CrossDomain 错误。 我已经尝试添加 cors_plug包来
我在 Phoenix 项目,和mix ecto.create , mix ecto.migrate , 和 mix ecto.drop都发出相同的错误: $ mix ecto.drop ==> tzd
在我的帖子模型上,我实现了一个简单的验证 def changeset(model, params \\ :empty) do model |> cast(params, @requ
这主要是为了测试目的,但是我怎样才能在 Heroku 上实现与 mix ecto.reset 相同的效果。这样的命令导致 FATAL: permission denied for database "
我们的 Web 应用程序目前在 C# 中运行在 Windows 和 IIS 上。我们严重依赖此环境中包含的 Windows 身份验证方案。启用 Windows 身份验证后,我们可以检测连接用户的身份,
在我的 Phoenix 应用程序中,我想对单个记录运行 get_by() Ecto 查询 - 但是,我要搜索的字段之一应该评估为 nil ,但 Phoenix/Ecto 禁止使用 nil 作为比较运算
我是一名优秀的程序员,十分优秀!