【问题标题】:Errors in assets -- js and css -- when running a phoenix/elixir app with the default setting with brunch使用早午餐默认设置运行 phoenix/elixir 应用程序时,资产中的错误 - js 和 css
【发布时间】:2017-01-26 00:03:12
【问题描述】:

我的 phoenix/elixir 应用程序中有很多“Uncaught ReferenceError:”和“jquery.waypoints.min.js:7 Uncaught TypeError: Cannot read property”之类的错误。这是因为我认为连接或加载 js 文件的顺序错误以及早午餐插入的命名空间。但是所有设置都是默认设置,文档中对此一无所知。

我的 js 和 css 以及 brunch-config.js 都保持不变。我正在使用 bootstrap 和 jquery 以及我自己的脚本和 css 文件。如何正确设置它们?我应该将我的 jquery 脚本和引导程序放入 /vendor 吗?

这是我的 brunch-config.js

exports.config = {
  files: {
    javascripts: {
      joinTo: {
        "js/app.js": /^(web\/static\/js)/,
        "js/vendor.js": /^(web\/static\/vendor)|(deps)/
      },
    },

    stylesheets: {
      joinTo: {
        "css/app.css"
        templates: {
          joinTo: "js/app.js"
        }
      }
    },

    conventions: {
      assets: /^(web\/static\/assets)/
    },

    paths: {
      watched: [
        "web/static",
        "test/static"
      ],

      public: "priv/static"
    },

    plugins: {
      babel: {
        ignore: [/web\/static\/vendor/]
      }
    },

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

    npm: {
      enabled: true,
      whitelist: ["phoenix", "phoenix_html"]
    }
  }
};

还有我的 app.js

import "phoenix_html"
import "jquery"
import "bootstrap"

【问题讨论】:

  • 您是否尝试过使用order 数组手动指定顺序,例如默认生成的brunch-config.js 中包含的注释掉的代码?见github.com/phoenixframework/phoenix/blob/…
  • @Dogbert,不单单是订单的问题,还有导入之类的问题。

标签: jquery css elixir phoenix-framework brunch


【解决方案1】:

选项 1:

如果您想更改文件连接的顺序,您可以在brunch-config.js 中执行此操作:

exports.config = {
  files: {
    javascripts: {
      joinTo: "js/app.js"
      order: {
        before: [
          "web/static/vendor/js/jquery-2.1.1.js",
          "web/static/vendor/js/bootstrap.min.js"
        ]
      }
    }
  }
}

你可以对 CSS 做同样的事情:

stylesheets: {
  joinTo: "css/app.css",
  order: {
    after: ["web/static/css/app.css"] // concat app.css last
  }
}

您可以阅读Brunch docs 了解更多信息。

请注意,如果您采用这种方法,则必须在 app.js 文件中导入模块。对于 JQuery,假设您使用 npm 安装它,这应该是 import $ from "jquery"

选项 2:

你也可以将你想要的文件放在/priv/static/jspriv/static/css中,然后从你的html(比如你的布局文件)中加载它们,如下所示:

<script src="<%= static_path(@conn, "/js/myscript.js") %>"></script>
  <link rel="stylesheet" href="<%= static_path(@conn, "/css/mystyles.css") %>">

我不得不这样做几次,例如当库没有将自己公开为模块时。

【讨论】:

  • 对于第二个选项,我应该在brunch-config.js 中输入什么?
  • 没什么。 Brunch 负责连接和缩小您指定的 JS 和 CSS。我帖子中的第二个选项完全绕过了早午餐。您可以将其视为“我将自己手动处理这些文件”选项。
猜你喜欢
  • 2016-03-26
  • 1970-01-01
  • 2013-09-26
  • 1970-01-01
  • 2016-05-15
  • 2016-04-25
  • 2017-07-23
  • 2018-07-17
  • 1970-01-01
相关资源
最近更新 更多