【问题标题】:Create-React-App adding folders inside src 'Module not found: can't resolve'Create-React-App 在 src 'Module not found: can't resolve' 中添加文件夹
【发布时间】:2019-03-11 23:06:52
【问题描述】:

我对 React 很陌生,我边走边学。我已经使用 Create React App 设置了一个反应应用程序。默认文件结构将所有内容都放在 src 中,没有子文件夹。我希望我的应用程序更有条理,所以我在 src 中添加了一个名为 components 的文件夹,该文件夹内有一个名为 header 的文件夹,其中有一个名为 header.js 的文件。这是我的文件结构:

src
-index.css
-index.js
-components/
--header/
---header.css
---header.js

这里是 index.js 代码:

import React from 'react';
import ReactDOM from 'react-dom';
import 'bootstrap/dist/css/bootstrap.min.css';
import './index.css';
import Header from './components/header/header';
import registerServiceWorker from './registerServiceWorker';

ReactDOM.render(<Header />, document.getElementById('root'));
registerServiceWorker();

这里是 header.js 代码:

import React, { Component } from 'react';
import './header.css';
import {
 Collapse,
 Navbar,
 NavbarToggler,
 NavbarBrand,
 Nav,
 NavItem,
 NavLink
 } from 'reactstrap';

class Header extends Component {
  constructor(props) {
      super(props);

      this.toggle = this.toggle.bind(this);
      this.state = {
          isOpen: false
      };
  }
  toggle() {
      this.setState({
          isOpen: !this.state.isOpen
      });
  }
  render() {
      return (
            <header>
              <Navbar color="inverse" light expand="md">
                  <NavbarBrand href="/"><span className="first">Kate The</span> <span className="second">Dev</span></NavbarBrand>
                  <NavbarToggler onClick={this.toggle} />
                  <Collapse isOpen={this.state.isOpen} navbar>
                      <Nav className="ml-auto" navbar>
                          <NavItem>
                              <NavLink href="/about/">About</NavLink>
                          </NavItem>
                          <NavItem>
                          <NavLink href="/projects">Projects</NavLink>
                          </NavItem>
                          <NavItem>
                          <NavLink href="https://vigilantebanana.github.io/">Workshop</NavLink>
                      </NavItem>
                  </Nav>
              </Collapse>
          </Navbar>
          </header>
      );
  }
}

export default Header;

当我使用“npm start”时,我得到了这个错误:

编译失败

./src/index.js

找不到模块:无法解析“/home/kshaw/thunderclap/src”中的“./components/header/header”

我已经在网上寻找答案,但我没有找到答案。据我了解 create-react-app,webpack 应该已经正确配置。我不想为了让这些文件夹工作而弹出。任何帮助,将不胜感激。谢谢。

编辑:我在 Chrome 开发工具中四处寻找,它甚至没有在源代码中显示标题文件夹。

【问题讨论】:

  • 我用 create-react-app 创建了一个项目,让它像你的项目一样工作正常!
  • 我让它工作了,但我不确定是什么导致它开始正确编译。我会发布答案,但我不确定答案是什么。

标签: javascript reactjs create-react-app


【解决方案1】:

React 组件应以大写字母开头,here 可以详细阅读

注意:

React 代码的通常和良好的结构可以是这样的:

src/
--index.js
--style.css
--components/
  --Header/
    --index.js
    --style.css
  --AnotherComponent/
    --index.js
    --style.css

当您想在代码中导入组件时,例如在 src/index.js 中:

import React from 'react';
import ReactDOM from 'react-dom';
import 'bootstrap/dist/css/bootstrap.min.css';
import './index.css';
import Header from './components/Header/';
import registerServiceWorker from './registerServiceWorker';

ReactDOM.render(<Header />, document.getElementById('root'));
registerServiceWorker();

【讨论】:

  • 这并不能解决问题。组件类已经大写。我继续尝试使用您的文件夹结构并将文件夹名称大写,但我得到了同样的错误。当一切都在 src 中没有子目录时,应用程序编译得很好。在 src 内的文件夹中似乎无法找到东西。
  • @KateTheDev 这个错误的唯一解释是它在给定的路径中找不到文件,所以你可能给了错误的路径。
  • 非常感谢您的反馈。不过我没有走错路,也许我会尝试重新开始并创建一个新应用程序,看看它是否能自行解决。
  • 这不能回答问题:/
  • 令人惊讶的是,对于这样一个基本问题没有答案,这似乎是一个新的 React 开发人员的绊脚石……这太荒谬了!
【解决方案2】:

尝试在 index.js 中删除并再次提供路径并保存,这对我有用。

【讨论】:

    猜你喜欢
    • 2019-03-11
    • 2019-08-14
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2018-11-16
    • 2021-12-02
    相关资源
    最近更新 更多