3

我在使用 reactjs 动态导入时遇到了一个奇怪的问题。假设我有一个组件,它的名字是ComponentA,它的路径就像myComponents/ComponentA. 现在,当我像下面的代码一样动态导入它时,它会运行良好:

Promise.all(
        [
            import('myComponents/ComponentA'),
            // other imports
        ]
    ).then(....);

但是,如果我在一个常量变量中定义我的组件路径,如下所示:

//before definition of my current component
const PATH = 'myComponents/ComponentA';
.
.
.
// some where in my component class
Promise.all(
    [
        import(PATH),
        // other imports
    ]
).then(....);

它会给我这样的错误:

错误:找不到模块“myComponents/ComponentA”。

有时,如果我只是向我的PATH变量添加一个空字符串,就可以解决问题,有时则不能。

//before definition of my current component
const PATH = 'myComponents/ComponentA';
.
.
.
// some where in my component class
Promise.all(
    [
       import(''+PATH), // some times by adding empty string, problem would be solved
       // other imports
    ]
 ).then(....);

任何关于正在发生的事情的想法将不胜感激。

4

2 回答 2

1

您至少必须有一个初始文字文件夹字符串(无变量)来限制可以加载哪些模块,因为它将捆绑所有可能的文件。

这是 webpack 的一个限制。有关详细信息,请参阅https://webpack.js.org/api/module-methods/#dynamic-expressions-in-import

const真的很遗憾它除了文字之外不认识其他东西。

于 2020-08-27T10:08:48.297 回答
1

也许试试这个新的 ES6 语法:

const PATH = 'myComponents/ComponentA';
Promise.all(
    [
       import(`${PATH}`), // try pass it like this
       // other imports
    ]
 ).then(....);
于 2017-12-31T12:05:03.943 回答