我们有一个.NET MVC应用程序提供的Aurelia SPA。 SPA是使用Webpack捆绑的。
在某些情况下,看似随机的JavaScript函数和对象将无法定义。因此,我们无法导航到某些路线。刷新浏览器可以解决这些问题。
我们发现重现此行为的步骤并不总是可靠的。
然后,我们将看到类似Cannot read property 'split' of undefined
的问题。导航到某些路线时。阻止路线导航的未定义对象并不总是相同。
我无法在本地主机上重现此行为。
在不部署新代码的情况下,我在周末打开浏览器,然后返回运行正常的应用程序。
任何建议将不胜感激。我不确定部署之间的关系,因为浏览器应该不知道任何服务器更改。
答案 0 :(得分:0)
我通过在我的块文件中添加一个内容哈希来解决此问题。
path: path.resolve(bundleOutputDir),
publicPath: "dist/",
filename: "[name].js",
chunkFilename: "[name].[contenthash].js",
},
我们的webpack构建输出了几个文件。其中大多数是在启动时必需的,并包含在我们的MVC应用的主控制器的index.cshtml中。
例如<script type="text/javascript" src="~/dist/app.js" asp-append-version="true"></script>
asp-append-version="true"
向这些文件添加版本,以便浏览器知道是否应从缓存中加载它们。
问题是webpack输出的其他块文件没有以这种方式引用。它们是从index.cshtml引用的文件中引用的。
这是我所相信的。
asp-append-version="true"
的那些被更新,而具有静态名称的那些被从缓存中获取。