would like to export a module that get's the module's definition from some global object.
It's something like:
export {
get DynamicModule() {
return __globalFluxStorage.state.property.property.property.property
}
}
...
import {DynamicModule} from 'dynamic-module'
We have a complex flux storage and DynamicModule is just a means of accessing __globalFluxStorage.state.property.property.property.property without the need to type in the long property accessor. Is this possible? Thanks.
Edit:
Since I am using babel, tried something like this:
Object.defineProperty(module.exports, "Forms", {
get: function() {
return __globalFluxStorage.state.property.property.property.property
}
});
But does not work, i.e. {DynamicModule} is undefined
No, it is impossible to make a getter for a module export - they are variable bindings, not properties.
However you could simply make that a default export:
export default __globalFluxStorage.state.property.property.property.property;
import DynamicModule from 'dynamic-module';
If you want a named import, you'll have to declare the name in your export:
export var DynamicModule = __globalFluxStorage.state.property.property.property.property;
import {DynamicModule} from 'dynamic-module';
This would also allow changing the value later when it's not available right at the time of the module being loaded:
export var DynamicModule;
…
DynamicModule = __globalFluxStorage.state.property.property.property.property;
(although in that case you might want to consider exporting a Promise or EventEmitter instead)