1

目前我正在尝试在我的电子应用程序中设置系统/亮/暗模式切换器。对于电子应用程序,我使用了电子 vue 库,然后将电子版本升级到7.3.2.

所以现在我想,我可以使用电子的新 API nativeTheme 来创建这个新功能。但是我现在得到的问题是,当我导入 nativeTheme 时,它​​是未定义的:

TypeError: Cannot set property 'themeSource' of undefined
    at VueComponent.theme (Settings.vue?e12e:62)
    at Watcher.run (vue.esm.js?a026:4577)
    at flushSchedulerQueue (vue.esm.js?a026:4319)
    at Array.eval (vue.esm.js?a026:1989)
    at flushCallbacks (vue.esm.js?a026:1915)

现在代码如下所示:

import { nativeTheme } from "electron";
// ...

watch: {
  theme(val) {
    localStorage.setItem("theme", val);
    nativeTheme.themeSource = val;
  }
}

我也已经尝试过使用 requirejs 变体,例如

const { nativeTheme } = require("electron");

但我显然得到了同样的错误。我当然已经在这里这里搜索过这个主题,但都没有解决我的问题。有什么我错过的吗?

此外,我还在这里发送带有版本的 package.json: package.json - devDependencies

4

1 回答 1

2

nativeTheme是一个主进程模块。您不能直接从渲染器进程导入它。您必须依赖 IPC 调用或 Electron 的remote模块才能在渲染器进程中使用它。

const { nativeTheme } = require("electron").remote;
于 2020-08-06T23:04:24.993 回答