【问题标题】:Grunt URL rewrite in Angular application on page reload重新加载页面时在 Angular 应用程序中重写 URL
【发布时间】:2018-05-09 16:16:24
【问题描述】:

这是 Grunt 文件中 livereload 块的样子:

livereload: {
  options: {
    open: true,
    middleware: function(connect, options, middleware) {
      var optBase = typeof options.base === "string" 
        ? [options.base] 
        : options.base;

      return [
        [
          require("connect-modrewrite")(["!(\\..+)$ / [L]"])
        ].concat(
          optBase.map(function(path) { return connect.static(path); })
        ),
        connect.static(".tmp"),
        connect().use("/bower_components", connect.static("./bower_components")),
        connect().use("/app/styles", connect.static("./app/styles")),
        connect.static(appConfig.app)
      ];
    }
  }
}

但是,如果我的 URL 有一个 '.' (句号)在其中,Grunt 无法重新加载页面。我在我的 Angular 应用程序中使用 HTML5 模式,效果很好。

请问是哪一部分

[
  require("connect-modrewrite")(["!(\\..+)$ / [L]"])
].concat(
  optBase.map(function (path) { return connect.static(path); })
)

导致它失败,我该如何解决?

注意:它仅在页面重新加载时失败。我第一次访问它工作的路线时,如果我点击刷新它会失败。

【问题讨论】:

    标签: javascript angular gruntjs legacy


    【解决方案1】:

    我能否知道 [this sn-p] 的哪一部分导致它失败,我该如何解决这个问题?

    此处的connect-modrewrite 规则似乎仅用于重写非静态资产 URL。

    [
      require("connect-modrewrite")(["!(\\..+)$ / [L]"])
    ].concat(
      optBase.map(function (path) { return connect.static(path); })
    )
    

    这里传入的规则 "!(\\..+)$ / [L]" 是一个 inverted URL matching rule,用于将所有包含句点和一个或多个字符的 URL 重写回基本 URL (/ )。因此,如果您的路线包含一个句点,它们将不会被重写......这就是它在实时重新加载运行时失败的原因。

    解决此问题的一个建议是更明确地避免重写对静态资产的请求:

        require("connect-modrewrite")([
          '!\\.html|\\.js|\\.svg|\\.css|'
          + '\\.scss.*|\\.woff.*|\\.gif.*|\\.png$ '
          // etc...
          + '/ [L]'
        ])
    

    请注意,此规则也以感叹号 (!) 开头。它不仅仅依赖于句点的存在,它更明确地针对不包含某些文件扩展名的 URL - 以及句点! (:

    注意:code for the suggestion was found on searchcode.com here

    我希望这会有所帮助! HMU 有任何问题、更正或实际情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-13
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 2019-01-28
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多