gpt4 book ai didi

reactjs - 获取Electron生产窗口以使用loadURL加载路线?

转载 作者:行者123 更新时间:2023-12-03 12:38:36 26 4
gpt4 key购买 nike

我设法建立了我的react/electron应用程序,并使其在本地运行。但是,我的应用程序的“默认”路由是/app,因此,当我的应用程序在本地运行时,不会显示任何内容。这就是我所拥有的:
public/main.js:

function createWindow() {
mainWindow = new BrowserWindow({
width: 400,
height: 400,
show: true,
frame: false,
transparent: true,
webPreferences: {
nodeIntegration: true,
preload: `${__dirname}/preload.js`,
},
});
const startURL = isDev
? "http://localhost:3000/app"
: `file://${path.join(__dirname, "../build/index.html")}`;

mainWindow.loadURL(startURL);

mainWindow.once("ready-to-show", () => {
// mainWindow.show()
mainWindow.setSize();
});
mainWindow.on("closed", () => {
mainWindow = null;
});
}
app.on("ready", createWindow);
src/index.js:
ReactDOM.render(
<React.StrictMode>
<BrowserRouter>
<Route path="/app" exact component={App} />
</BrowserRouter>
</React.StrictMode>,
document.getElementById("root")
);
我正在使用react-router来完成这项工作。这确实可以在本地工作,但不适用于生产环境。为了测试这一点,我将 path="/app"更改为 path="/"并删除了 exact,对其进行了构建,并且按预期工作。但是,我确实希望它指向该特定的 /app路由,因为我希望其他不相关的窗口位于其他端点。我如何使构建正确识别这一点?我尝试将 homepage: "./"中的 homepage: "./app"更改为 package.json,但是没有任何改变。
编辑:我确实尝试将startURL更改为 file://${path.join(__dirname, "../build/index.html#/app")}(添加了 this answer所建议的 #/app),但是那也不起作用...

最佳答案

事实证明,这个答案分为两个部分:第一个是错字。代替#/app,添加#app是正确的(因此完整的字符串变为file://${path.join(__dirname, "../build/index.html#app")})。
另一个问题显然与react-router-dom和BrowserRouter有关;它在生产中不起作用。所以我有这个:

if (!process.env.NODE_ENV || process.env.NODE_ENV === "development") {
ReactDOM.render(
<React.StrictMode>
<BrowserRouter>
<Route path="/app" exact component={App} />
</BrowserRouter>
</React.StrictMode>,
document.getElementById("root")
);
} else {
ReactDOM.render(
<React.StrictMode>
<HashRouter>
<Route path="/app" exact component={App} />
</HashRouter>
</React.StrictMode>,
document.getElementById("root")
);
}
HashRouter在dev中不起作用,因此需要此代码。

关于reactjs - 获取Electron生产窗口以使用loadURL加载路线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65047126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com