使用Webpack导入时出现意外的未定义

马可·卡瓦纳(Marco Cavanna)

我遇到的问题以前从未发生过:我正在使用Webpack + Babel 7编译一个基本的入门浏览器Web应用程序(使用React)。我有三个不同的文件:

  1. withAuth.js Auth高阶组件
  2. NavBar.js NavBar组件
  3. Login.js 登录表格

如果我withAuth在NavBar中导入HOC,就可以了,但是如果我withAuth在Login.js文件中导入了组件,则返回undefined

/** withAuth.js */

console.log('withAuth Loaded');

const withAuth = Child => ChildProps => (
    <AuthContext.Consumer>
        { authClient => <Child {...ChildProps} authClient={authClient} }
    </AuthContext.Consumer>
)

export { withAuth };


/** NavBar.js */
import { withAuth } from 'HOC/Auth';

console.log('NavBar Loaded', withAuth); // <- My HOC

const NavBarComponent = (authClient) => { /* ... My Code ... */ }

const NavBar = withAuth(NavBarComponent);

export default NavBar;


/** Login.js */
import { withAuth } from 'HOC/Auth';

console.log('Login Loaded', withAuth); // <- undefined ??

const LoginFormComponent = (authClient) => { /* ... My Code ... */ }

const LoginForm = withAuth(LoginFormComponent);
//                /|\
//                 |
//    Will produce an Error, withAuth is Undefined

这是我的Webpack配置:

/** webpack.config.js */

module.exports = {
    entry: { core: 'index.js' },
    resolve: {
        alias: {
            HOC: './path/to/hoc/folder'
        }
    },
    optimization: {
        runtimeChunk: 'single',
        splitChunks: {
            chunks: 'all'
        }
    },
    plugins: [ /* Various Plugin */ ],
    module: {
       rules: [ /* My Rules */ ]
    }
}

有人知道我的HOC为什么undefined吗?

编辑:我已经将控制台日志放在树文件中。结果是:

'Login Loaded' - undefined
'withAuth Loaded'
'NavBar Loaded' - function() { }

编辑2:这是文件结构:

app/
|-high-order-component/
| |-auth/
|   |-withAuth.js
|
|-layout-component/
| |-navbar/
|   |-index.js
|
|-pages/
  |-auth/
    |-login.js
马可·卡瓦纳(Marco Cavanna)

解决

经过整个下午的大量测试和研究,我找到了解决问题的方法。就像我在问题中说的那样,我的是一个较大的项目,我仅部分编写了其结构,因为我认为问题出在这三个文件中。

实际上,该问题是循环依赖问题,而不是Webpack配置问题。在我的项目中,我有一个名为“ Route”的模块,该模块存储所有Path和Path的所有组件,因此我可以使用Array Map函数构建React Router。该模块具有允许我通过路径进行路由的功能,并且可以向我返回到组件的路径字符串。我的问题是由于这个模块在项目中经常被调用,并且创建了循环依赖。

Webpack在编译过程中没有显示循环依赖,但是我发现添加一个名为CircualDependencyPlugin的插件很有用找到循环依赖项时,此插件将中断Webpack的编译。

Route模块分为两个文件解决了我的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 Typescript 时出现意外的未定义控制台日志输出

导入时会出现意外的代币

使用导入时函数未定义错误

导入时获取返回未定义

为什么在导入时未定义?

在QueryBuilder中使用动态输入时出现意外结果

Python / C ++扩展。导入时,出现未定义的符号错误

使用导入/导出模块时出现“ReferenceError:未定义”

使用Webpack加载引导时出现“ jquery未定义”

在Python中使用Django-尝试导入时未定义视图

如何修复PyDev“导入时未定义变量”错误?

在 Laravel excel 中导入时路由未定义

从不同文件导入时未定义的函数?

从metpy.plots导入时,cTables是否未定义?

使用T-SQL批量插入时出现意外字符

Webpack和React出现意外令牌

Angular应用程序导致Uncaught SyntaxError:JavaScript中导入时出现意外标识符

“未定义需求”使用webpack 2

jQuery未定义(使用Webpack)

如何解决:使用.csv Dictreader的Python导入文件失败时出现未定义字符

导入fs模块时出现'ReferenceError:require未定义'

使用 useEffect 出现未定义的对象

使用导入abc时出现意外的标识符= require('node-module')

从另一个文件导入时方法未定义

为什么在 javascript 中执行导入时,有时会返回未定义的变量?

导入时未定义枚举对象-通过Jupyter Notebook的Python 3

为什么导入时我的Redux减速器未定义

模块解析失败:使用 webpack 5 时出现意外令牌

使用管道时出现意外输出