我遇到了一个问题,我真的找不到以前的任何答案或文档。
我正在本地机器上的模块中加载一个组件"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文件。它就像一个魅力