Re-exporting modules does not work with object spread

前端 未结 1 1758
刺人心
刺人心 2021-01-21 18:02

i have an index.js file that reads:

import aReducer from \'./ducks/a\';
import bReducer from \'./ducks/b\';
import * as aSelectors from \'./ducks/a\         


        
相关标签:
1条回答
  • 2021-01-21 18:33

    You cannot use ... in an export {}; block. It is an explicit list of names just like import {name} from is. It is not an object with keys being exported. e.g. the same way imports do

    import { foo as fooRenamed } from "";
    

    with export it is

    export {
      fooVar as foo,
    };
    

    The export block is an explicit list of variables to export, with an optional explicit name for the export. There are no objects involved.

    Specifically, there are no objects involved because the names of the exports are processed and known before the body of the file has even executed, so not only are objects not allowed, they are impossible to allow because objects require execution to exist.

    To get what you'd want, you should use:

    // Export the referenced files' default under two specific names.
    export { default as aReducer } from './ducks/a';
    export { default as bReducer } from './ducks/b';
    
    // Re-export every named export from these two files.
    export * from './ducks/a';
    export * from './ducks/b';
    
    0 讨论(0)
提交回复
热议问题