导入的组件在反应-创建-应用程序中转换为"/static" url



我遇到了一个问题,我真的找不到以前的任何答案或文档。

我正在本地机器上的模块中加载一个组件"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应用程序,但生成的文件都不是链接模块的主要导出的一部分。

当我导入它和console.log时,它被导入为一个字符串:"/static/media/login.1d0b2e37.jsx。">

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

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

因为我正在尝试加载导入:

import { Login } from 'component-module';

直接进入react路由器dom路由。所有直接存在于我的create-react-app文件夹"src"中的组件都能很好地渲染。

记录时:

console.log(Login);

导入后,很明显它是一个字符串:"/static/media/login.1d0b2e37.jsx。">

我的create-react应用程序项目的目录结构是(一个通用的create-rect应用程序):

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

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

create-rect应用程序开发服务器对外部组件的渲染是否有一些奇怪之处?也许在一个Webpack插件中,它只是将外部内容视为静态的?

据我所知,在创建反应应用程序文档中没有关于这方面的信息

模块是指库吗?就像你可以通过npm安装作为其他应用程序的依赖项安装一样?

如果是这样的话,CRA就不是为此目的而设计的。它用于创建应用程序。

如果您确实认为有必要为登录组件创建库,并且希望使用CRA来创建库,您可以遵循以下指南:https://medium.com/@lokhmakov/best-way-to-create-npm-packages-with-create-react-app-b24dd449c354或使用此工具,尽管我自己从未尝试过,也无法保证。

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

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

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

在App.jsimport Login from './components/Login

我试图重命名我的文件,其中包含导出到.js文件。它就像一个魅力

最新更新