部署新的Webpack包会导致错误,直到页面刷新

时间:2017-05-04 18:55:13

标签: reactjs webpack react-router code-splitting

我们使用带有React的webpack 1.x捆绑我们的应用程序。此外,为了在javascript文件发生变化时破坏缓存,我们将输出设置为webpack.config.js

output: {
    path: __dirname + '/dist',
    filename: 'index_bundle.[chunkhash:10].js',
    publicPath: '/'
},

这成功地实现了在部署新版本的应用程序时更改文件名的目标。在成功部署后,可以看到新文件存在。

当用户在部署期间使用应用程序时,会出现皱纹。突然之间,曾经存在的块没有,并且当index.html成功更新时,浏览器当前正在使用的一些块会对旧的,不存在的文件提出错误请求。

webpack是否有传统方式来处理交换机?或者在我们的React应用程序中,让它优雅地处理错误的组件导入。我们托管S3,它(就像Meteor,我在印象中)在一个不存在的文件请求上回退到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.

1 个答案:

答案 0 :(得分:1)

如果您没有删除S3上的旧文件怎么办?

如果你使用不同的chunkhash上传,大概你可以将旧的哈希文件保留一段时间吗?