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); })
)
导致它失败,我该如何解决这个问题?
注意:仅在页面重新加载时失败。我第一次访问该路线时,它可以工作,然后如果我点击刷新,它就会失败。
我能否知道 [此片段] 的哪一部分导致其失败以及如何解决此问题?
The connect-modrewrite
这里的规则似乎仅用于重写非静态资产 URL。
[
require("connect-modrewrite")(["!(\\..+)$ / [L]"])
].concat(
optBase.map(function (path) { return connect.static(path); })
)
规则在这里传入,"!(\\..+)$ / [L]"
, is an 反向URL匹配规则 https://github.com/tinganho/connect-modrewrite#inverted-url-matching重写所有 URLdon't包含一个句点和一个或多个字符返回到基本 URL (/
)。因此,如果您的路线包含句点,它们将不会被重写...这就是实时重新加载运行时失败的原因。
解决这个问题的一个建议是更明确地避免对静态资产的请求进行重写:
require("connect-modrewrite")([
'!\\.html|\\.js|\\.svg|\\.css|'
+ '\\.scss.*|\\.woff.*|\\.gif.*|\\.png$ '
// etc...
+ '/ [L]'
])
请注意,此规则也以感叹号开头 (!
)。它不是仅仅依赖于句点的存在,而是更明确地针对不包含某些文件扩展名的 URL - 以及句点! (:
Note: 在 searchcode.com 上找到了建议的代码: https://searchcode.com/file/284650461/Gruntfile.js/
我希望这有帮助! HMU 如有任何问题、更正或实际情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)