【问题标题】:js in html is not executing in Phoenix framework sample apphtml 中的 js 未在 Phoenix 框架示例应用程序中执行
【发布时间】:2015-11-15 03:21:14
【问题描述】:

我在玩 phoenix 框架。我完全复制了聊天示例,但没有得到任何结果。

事实上,当我在 app.js 中写 console.log("testing") 时,我注意到我的控制台没有记录任何内容...

我收到此链接中引用的错误:

phoenix framework - invalid argument at new Socket - windows

但是,该错误似乎与早午餐在 Windows 中不起作用有关。当我早午餐构建时,我可以确认 app.js 具有我包含的 console.log("testing")

不过,当我访问我的 localhost:4000 时,我没有看到该控制台日志。

为什么 JS 没有执行?

【问题讨论】:

    标签: phoenix-framework


    【解决方案1】:

    原来该指南缺少使其无法正常工作的关键行。

    该指南有以下内容:

        <script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
        <script src="<%= static_path(@conn, "/js/app.js") %>"></script>
    </body>
    

    但这缺少可以放在正文标记上方的以下行。

    <script>require("web/static/js/app")</script>
    

    【讨论】:

    • 额外信息:Brunch 有一个 autoRequire 功能,我们开始使用多个版本。这消除了对 的需求,但您需要在 brunch-config 中启用它并确保您运行的是正确版本的 brunch。示例见此处:github.com/phoenixframework/phoenix/blob/master/installer/…
    【解决方案2】:

    即使 Chowza 已经解决了这个问题,我想提出另一个可能更清洁的解决方案,使用 Brunch.io 的 autoRequire 功能。

    出现这个问题是因为 Brunch.io 没有正确自动要求 Windows 下的 app.js。 Chowza 通过在 html 中手动要求该文件来解决此问题。如果您按以下方式更改 /brunch-config.js,则可以省略手册 require:更改自

    modules: {
      autoRequire: {
        "js/app.js": ["web/static/js/app"]
      }
    }
    

    modules: {
      autoRequire: {
        "js/app.js": ["web/static/js/app"],
        "js\\app.js": ["web/static/js/app"]
      }
    }
    

    这种方式 app.js 是 autoRequired,即使您在基于 Windows 的系统上工作。

    我想提一下,这个解决方案是基于 Chowza 自己发布的链接,所以所有功劳归于他指向该链接。

    【讨论】:

      猜你喜欢
      • 2019-11-05
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      • 2019-11-27
      相关资源
      最近更新 更多