我们使用带有React的webpack 1.x来捆绑我们的应用程序。此外,为了胸围缓存时,JavaScript文件已经改变,我们有我们的输出webpack.config.js
设置为:部署新的Webpack软件包会导致错误,直到页面刷新
output: {
path: __dirname + '/dist',
filename: 'index_bundle.[chunkhash:10].js',
publicPath: '/'
},
这成功地完成我们的,当应用程序的新版本部署更改文件名的目标。在成功部署时,可以看到新文件在那里。
当部署期间用户在应用程序中时会出现皱纹。突然之间,曾经存在的区块并没有,而index.html成功更新时,浏览器当前正在使用的一些区块对旧的,不存在的文件提出错误请求。
webpack处理交换机是否有一种常规方式?或者在我们的React应用程序中,以优雅地处理不良的组件导入。我们在S3上托管,其中(如流星,我在印象之下)回落到index.html上的一个不存在的文件请求。在我们的应用程序中,这会导致Syntax error: Unexpected token <
错误,因为它期望的是javascript,而不是HTML。
编辑:为了避免在我的React应用程序中导入错误,也许我可以在路径的index.js文件中应用逻辑?目前我getComponent调用看起来简直像这样:
getComponent(nextState, callback) {
require.ensure([], (require) => {
callback(null, require('./components/HomePage').default);
});
}
编辑2:Found an answer to my issue here.
有些事情是不对的。如果你正在服务一个html(因为一个不存在的文件),你应该用'HTTP 404'来回答它,这会迫使浏览器忽略该文件并跳过解析。 – enapupe
S3上的静态网站托管的默认设置是让文件在发生错误时返回(包括无法找到所述文件)。这就是说,即使如此,我的React应用程序有没有办法查看404(或错误的文件类型)并避免任何类型的错误?我的路由index.js文件的getComponent已被添加到 –