【发布时间】:2021-03-15 11:22:04
【问题描述】:
我想开发一个插件,其中管理前端(例如 wp-admin 页面)使用 React 呈现。
我使用create-react-app 在子文件夹中开发应用程序。
为了将 React 应用程序加载到 WordPress 管理员中,我正在查看 build/asset-mainfest.json 中的 entrypoints 并确保以正确的顺序将它们排入队列。
React 应用程序启动良好,但所有相对路径都损坏了,例如以下不起作用(我知道这是Webpack feature):
import logo from "./logo.jpg";
function App() {
return <img src={logo} alt="" />;
}
export default App;
它崩溃的原因是,Webpack 假定 build 文件夹位于根目录。
我已经看到了一些解决方案,但没有一个能满足我的需求:
- Here作者只是防止代码拆分,但仍然遇到与上述相同的问题。它只是不考虑其他资产。
-
Here作者在
package.json中设置"homepage": "/wp-content/plugins/my-plugin/react-app/build"。但我认为如果 WordPress 托管在子目录本身(如mywebsite.com/blog)中,这会中断 -
Here
homepage也设置为特定域,这使得插件不可分发。 - 还有一篇文章建议将 HTML
base属性添加到头部。但可能还有其他相关链接会因此而中断。 -
Setting the homepage to
"."也不起作用,因为我不提供build文件夹本身。
您知道我应该如何在此处使用create-react-app 导入资产吗?我希望插件可以工作,但是 WordPress 已设置。
我最好的猜测是将 React 的 URL 传递到资产文件夹并编写类似 <img src={props.assetsUrl + '/logo.jpg'} /> 的内容,完全避免这些导入。
我想避免使用iframe,因为这会导致我不想处理的其他麻烦... :)
【问题讨论】:
标签: reactjs wordpress webpack embed create-react-app