Phoenix - 找不到 GET /static/js/some.js 的路由

Posted

技术标签:

【中文标题】Phoenix - 找不到 GET /static/js/some.js 的路由【英文标题】:Phoenix - no route found for GET /static/js/some.js 【发布时间】:2016-06-24 02:59:15 【问题描述】:

我正在将我的 Rails 应用程序迁移到 phoenix 框架。

我在web/static/jsweb/static/css 目录中添加了一些javascript(比如some.js)和css 文件。

首页中的<%= static_path(@conn, "/js/some.js") %>page/index.html.eex不起作用。它引发了异常(开发环境):

Phoenix.Router.NoRouteError at GET /static/js/some.js
no route found for GET /static/js/some.js (VisualTrader.Router)

如果我将some.js 复制到priv/static/js 目录,它会起作用。那么我错过了什么?我认为资产管道的工作方式类似于 rails 中的管道,它会自动预编译资源。

下面列出我的 phoenix 框架环境:

灵药版本

elixir -v

Erlang/OTP 18 [erts-7.1] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

Elixir 1.3.0-dev (187f4f8)

凤凰版

defp deps do
   [:phoenix, "~> 1.1.2",
   ...

【问题讨论】:

您能否验证priv/static/js/some.js 文件是否存在? JS 是在 web 目录中开发的,但从 priv 目录中提供。我从来没有使用过内置的早午餐,但 AFAIK 它应该会自动编译/复制到 priv。 @CodyPoll 我触摸了web/static/js/some.js,记录是10 Mar 02:10:19 - info: compiled some.js and 7 cached files into app.js in 1 sec。如何保持 javascript 文件分开? 【参考方案1】:

如果您想包含要预编译的 Javascript 文件,您需要添加以下代码行。

web/static/js 目录中添加您的 Javascript 文件。

web/static/js/app.js 中包含您的文件

import "./some-file"

【讨论】:

我想在一个特定的视图模板中包含一个特定的js。所以整个预编译的事情变得无用和不必要。

以上是关于Phoenix - 找不到 GET /static/js/some.js 的路由的主要内容,如果未能解决你的问题,请参考以下文章

电脑有些老,BIOS是phoenix-award的,电脑启动不了了,亟需解决

找不到静态文件路径页面重定向到另一个页面

Phoenix连接安全模式下的HBase集群

Django - 找不到静态文件

从 Phoenix / Elixir GET 函数中调用 Typescript 函数

找不到django静态文件