file://local-filesystem-project-location-without-index-html/{angular-route}
,而文件系统中不存在它。你需要"强制"在URL中加载(包含) index.html
部分。index.html
中的<base href="/">
1. 更改为:<base href="">或<base href="index.html">
步骤2:为了使路由正常工作,在Angular中切换到哈希位置策略app.module.ts
providers: [
{
provide: LocationStrategy,
useClass: HashLocationStrategy
}
]
RouterModule.forRoot(routes, { useHash: true })
#
以进行导航路由。mainWindow.loadURL("file:///index.html#/my-route")
这对我有用...希望能帮助面临相同问题的人。
我在 github 上找到了这个主题的解决方案。
您需要添加以下代码:win.webContents.on('did-fail-load', () => win.loadURL(...));
@mariotaku
因此,当您的应用程序未找到正确的路由时,它将重新加载整个应用程序。
当您重新加载应用程序时,electron 不知道要加载什么内容,因此它会尝试加载您当前的路由,例如 /home
,但现在已经找不到了。订阅 did-fail-load
事件将使您的应用程序重启,并加载正确的 URL,从而找到正确的文件以进行加载。
function loadnow(win) { win.loadURL(isDev ? 'http://localhost:3000' : \
file://${path.join(__dirname, '../dist/index.html')}`);
}我只需要在createWindow中调用它,还有在
'did-fail-load'` 中也要调用。 - Zachary Vander Klippe我们可以通过全局快捷键来防止重新加载问题
import { app, BrowserWindow,globalShortcut } from 'electron';
app.on('ready', async () => {
if (process.env.NODE_ENV === 'development' || process.env.DEBUG_PROD === 'true') {
await installExtensions();
}
globalShortcut.register('CommandOrControl+R', () => false);
globalShortcut.register('F5', () => false);
}