首页 文章

导入的组件在react-create-app中转换为“/ static”URL

提问于
浏览
1

我遇到了一个问题,我无法找到任何以前的答案或文档 .

我正在我的本地计算机上将模块中的组件“login.jsx”加载到“index.js”中:

import Login from './login';

export { Login };

“login.jsx”中导出的组件非常基本 .

模块main直接指向index.js文件,我将其导入到create-react-app生成的“App.js”文件中 .

该模块的目录结构如下:

module
   | src
   | --- components
   | --- --- login.jsx
   | --- --- index.js
   | package.json

值得注意的是,这也是一个create-react-app,但生成的文件都不是链接模块主要导出的一部分 .

当我导入它和console.log时,它将作为字符串导入:“/ static / media / login1d0b2e37.jsx . ”

具体来说,我得到的错误是:

Invalid tag: /static/media/login.1d0b2e37.jsx

因为我试图加载导入:

import { Login } from 'component-module';

直接进入react-router-dom路由 . 直接存在于我的create-react-app文件夹“src”中的所有组件都可以正常渲染 .

记录时:

console.log(Login);

导入后,立即清楚它是一个字符串:“/ static / media / login1d0b2e37.jsx . ”

我的create-react-app项目的目录结构是(一个通用的create-react-app):

create-react-app
   | src
   | --- App.js

其中存在上述导入,导致将 Login 作为字符串导入 .

使用外部组件的create-react-app开发服务器呈现是否存在一些奇怪的问题?也许在其中一个只是将外部处理为静态的Webpack插件中?

据我所知,create-react-app docs中没有关于此的信息

1 回答

  • 1

    按模块,你的意思是图书馆吗?在某些东西中,您可以通过npm install作为其他应用程序的依赖项安装?

    如果是这样,CRA不是为此目的而设计的 . 它旨在创建应用程序 .

    如果你真的看到需要为登录组件创建一个库,并希望使用CRA这样做,你可以按照本指南:https://medium.com/@lokhmakov/best-way-to-create-npm-packages-with-create-react-app-b24dd449c354或使用this tool,虽然我自己从来没有尝试过,也无法保证它 .

    是否有充分的理由将组件实现为库?库主要用于与开发人员共享通用功能,以便在各自的应用程序中使用 .

    如果您只打算在特定应用中使用此组件,我建议您将其作为应用中的组件实现 . 您仍然可以将其实现为独立库,但无需设置构建逻辑 .

    create-react-app
    |src
    |    App.js
    |    components
    |        Login
    |            index.js
    |            Login.jsx
    

    并在App.js import Login from './components/Login

相关问题