Make HMR compatible with numeric IDs

Summary:We recently refactor the packager to transform the module names into numeric IDs but we forgot to update the HMR call site. As a consequence, HMR doesn't work the first time a file is saved but the second one.

This is affecting master as of 3/20. If we don't land this before v0.23 is cut we'll have to cherry pick it. This rev does *not* need to be picked on v0.22.

Reviewed By: bestander

Differential Revision: D3075192

fb-gh-sync-id: 410e4bf8f937c0cdb8f2b462dd36f928a24e8aa8
shipit-source-id: 410e4bf8f937c0cdb8f2b462dd36f928a24e8aa8
This commit is contained in:
Martín Bigio 2016-03-21 15:50:15 -07:00 committed by Facebook Github Bot 4
parent 3a1634ec7b
commit 1ef9e4dc59
3 changed files with 5 additions and 5 deletions

View File

@ -98,7 +98,7 @@ Error: ${e.message}`
RCTExceptionsManager && RCTExceptionsManager.dismissRedbox && RCTExceptionsManager.dismissRedbox();
}
modules.forEach(({name, code}, i) => {
modules.forEach(({id, code}, i) => {
code = code + '\n\n' + sourceMappingURLs[i];
require('SourceMapsCache').fetch({
@ -116,7 +116,7 @@ Error: ${e.message}`
code = [
`__accept(`,
`${name},`,
`${id},`,
`function(global,require,module,exports){`,
`${code}`,
'\n},',

View File

@ -252,7 +252,7 @@ function attachHMRServer({httpServer, path, packagerServer}) {
return JSON.stringify({
type: 'update',
body: {
modules: bundle.getModulesNamesAndCode(),
modules: bundle.getModulesIdsAndCode(),
inverseDependencies: client.inverseDependenciesCache,
sourceURLs: bundle.getSourceURLs(),
sourceMappingURLs: bundle.getSourceMappingURLs(),

View File

@ -34,10 +34,10 @@ class HMRBundle extends BundleBase {
return Promise.resolve();
}
getModulesNamesAndCode() {
getModulesIdsAndCode() {
return this._modules.map(module => {
return {
name: JSON.stringify(module.name),
id: JSON.stringify(module.id),
code: module.code,
};
});