У меня есть проблема, которая никогда не случалась со мной раньше: я собираю небольшое базовое веб-приложение для начинающих (с React), используя Webpack + Babel 7.
У меня есть три разных файла:
withAuth.js
Компонент высокого порядка Auth
NavBar.js
Компонент NavBar
Login.js
Форма входа
Если я импортирую withAuth
HOC в NavBar, все в порядке, но если я импортирую компонент 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
?
Edit:
Я поместил Console Log в файл дерева. Результат:
'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