【问题标题】:Unable to route properly with bidi无法使用 bidi 正确路由
【发布时间】:2020-07-10 01:58:20
【问题描述】:

我正在“/this-route”上发送一个索引处理程序:

(defn index-handler [req]
  (assoc (resource-response "index.html" {:root "public"})
         :headers {"Content-Type" "text/html; charset=UTF-8"}))

(def routes ["" {"/this-route" {:get index-handler}}]) ;; works

效果很好。

但是当我向这条路由附加任何内容时,即使我仍然可以发送基本的响应/响应,我也无法发送索引处理程序:


(def routes ["" {"/this-route" {"" {:get index-handler} ;; doesn't work
                                "/something" {:get index-handler} ;; doesn't work
                                "/something-else" (res/response "some response") ;; works  

}}])

我在客户端控制台中收到错误,在我启动应用程序的 index.html 行中显示错误:

    <script type="text/javascript">myapp.system.go();</script>

错误是“myapp 未定义”。

为什么会这样,我做错了什么?

--- 编辑 --- 这是控制台中的完整错误:

Uncaught ReferenceError: myapp is not defined
    at something-else:15

DevTools failed to load SourceMap: Could not load content for chrome-extension://gighmmpiobklfepjocnamgkkbiglidom/include.preload.js.map: HTTP error: status code 404, net::ERR_UNKNOWN_URL_SCHEME

【问题讨论】:

  • 如果您的客户端JS不再工作,您很可能更改了JS文件不再可以加载的路由?您在开发控制台/网络选项卡中看到 404 吗?如果是这种情况,请重写问题的最后一点以使其清楚。
  • 是的,我愿意。在编辑中完成输出。
  • 我的意思是:您是否在 network 选项卡中看到 404 错误?您的编译输出(.js 文件)可以不再加载吗?
  • 在网络选项卡中有一个返回 200 的“某物”名称。没有 404。我在网络选项卡中有四个东西,分别是 200、style.css 204、myapp.js 204 和 favicon.png 204。
  • 如果你回到“正常工作”版本,这个错误就会消失,一切都很好?

标签: clojure clojurescript bidi


【解决方案1】:

您的路线运行良好:

  (let [routes ["" {"/this-route" {:get :some-handler}}]]
    (is= (bidi/match-route routes "/this-route" :request-method :get)
      {:handler :some-handler, :request-method :get}))

  (let [routes ["" {"/this-route" {""                {:get :handler-1}
                                   "/something"      {:get :handler-2}
                                   "/something-else" {:get :handler-3}}}]]
    (is= (bidi/match-route routes "/this-route" :request-method :get)
      {:handler :handler-1, :request-method :get})
    (is= (bidi/match-route routes "/this-route/something" :request-method :get)
      {:handler :handler-2, :request-method :get})
    (is= (bidi/match-route routes "/this-route/something-else" :request-method :get)
      {:handler :handler-3, :request-method :get}))

正如 cfrick 所说,您以某种方式在编译和/或加载代码时产生了问题。那是你需要看的地方。

【讨论】:

    猜你喜欢
    • 2020-07-08
    • 2016-12-25
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 2021-07-18
    • 2020-04-02
    相关资源
    最近更新 更多