9

我们使用带有 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: 在这里找到了我的问题的答案。

4

1 回答 1

1

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

如果您使用不同的 chunkhash 上传,大概您可以将旧的散列文件保留一段时间?

于 2017-05-04T19:35:05.907 回答