首页 文章

发出从react-loadable附带的组件导入外部模块的问题

提问于
浏览
0

我使用react-loadable(5.4.0)加载了一个组件,它还加载了一些其他本地和外部库:

import { validationAPI, docstringAPI, autocompleteAPI } from 'utils/request';
import something from './something';

import CodeMirror from 'react-codemirror';
import CM from 'codemirror';

import 'codemirror-docs-addon';
import 'codemirror-docs-addon/lib/main.css';

class MyComponent extends React.Component {
  render() {
     return (
        <div>What I do here it doesn't matter</div>
     )
  }
}
export default MyComponent

这是定义的可加载:

import React from 'react';
import Loadable from 'react-loadable';

const Loading = () => (
  <div>
    Loading stuff
  </div>
);

const LoadableComponent = Loadable({
  loader: () => import('./MyComponent'),
  loading: Loading,
});

export default (props) => (
  <LoadableComponent {...props} />
);

我遇到的问题:如果我从我的应用程序中异步包含的模块 imports local modules never imported before ,我收到此错误:

警告:React.createElement:type无效 - 期望一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:object . 检查LoadableComponent的render方法 . 在LoadableComponent中......

例如:在上面的代码中我导入了 ./something . 如果之前从未在我的应用程序中加载此模块,我会收到上述错误 .

如果我:

  • 在其他地方导入模块(对于 validationAPI ,导入时没有问题)

  • 删除导入

...应用程序工作,我有异步行为 .

注意:如果使用进口的东西不重要 .

我还尝试将 something 模块移动到其他位置,但这似乎与模块位置或相对导入语法无关 .

另请注意,externals库不会给我任何问题:例如: codemirror 库仅包含在该文件中,但它仍然有效 . Only local modules 给我这个问题 .

找到的唯一解决方法是:不导入之前从未导入的任何内容,但在组件的文件中包含内联的 something 模块内容 .

这是可以接受的,但文件大小有点膨胀 .

我不确定这是反应加载或webpack或其他问题 . 有什么建议吗?

1 回答

相关问题