99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Electron 常見問(wèn)題 (FAQ)

2023-01-31 11:01 更新

為什么我在安裝 Electron 的時(shí)候遇到了問(wèn)題?

在運(yùn)行 npm install electron 時(shí),有些用戶會(huì)偶爾遇到安裝問(wèn)題。

在大多數(shù)情況下,這些錯(cuò)誤都是由網(wǎng)絡(luò)問(wèn)題導(dǎo)致,而不是因?yàn)?nbsp;electron npm 包的問(wèn)題。 如 ELIFECYCLE、EAI_AGAINECONNRESET 和 ETIMEDOUT 等錯(cuò)誤都是此類網(wǎng)絡(luò)問(wèn)題的標(biāo)志。 最佳的解決方法是嘗試切換網(wǎng)絡(luò),或是稍后再嘗試安裝。

如果通過(guò) npm 安裝失敗,您可以嘗試直接從 electron/electron/releases 直接下載 Electron。

Electron 會(huì)在什么時(shí)候升級(jí)到最新版本的 Chrome??

通常來(lái)說(shuō),在穩(wěn)定版的 Chrome 發(fā)布后一到兩周內(nèi),我們會(huì)更新 Electron 內(nèi)的 Chrome 版本。 這個(gè)只是個(gè)估計(jì)且不能保證,取決于與升級(jí)所涉及的工作量。

我們只使用穩(wěn)定的 Chrome 頻道。 如果一個(gè)重要的修復(fù)在 beta 或 dev 通道中,我們將返回端口。

Electron 會(huì)在什么時(shí)候升級(jí)到最新版本的 Node.js??

我們通常會(huì)在最新版的 Node.js 發(fā)布后一個(gè)月左右將 Electron 更新到這個(gè)版本的 Node.js。 我們通過(guò)這種方式來(lái)避免新版本的 Node.js 帶來(lái)的 bug(這種 bug 太常見了)。

Node.js 的新特性通常是由新版本的 V8 帶來(lái)的。由于 Electron 使用的是 Chrome 瀏覽器中附帶的 V8 引擎,所以 Electron 內(nèi)往往已經(jīng)有了部分新版本 Node.js 才有的嶄新特性。

如何在兩個(gè)網(wǎng)頁(yè)間共享數(shù)據(jù)?

在兩個(gè)網(wǎng)頁(yè)(渲染進(jìn)程)間共享數(shù)據(jù)最簡(jiǎn)單的方法是使用瀏覽器中已經(jīng)實(shí)現(xiàn)的 HTML5 API。 其中比較好的方案是 Storage APIlocalStoragesessionStorage 和 IndexedDB

或者,您可以使用 Electron 提供的原始版 IPC 。 若要主進(jìn)程和渲染器進(jìn)程之間共享數(shù)據(jù),可以使用 ipcMain 和 ipcRenderer 兩個(gè)模塊。 若要直接在網(wǎng)頁(yè)之間進(jìn)行溝通,您可以從一個(gè)頁(yè)面發(fā)送一個(gè) MessagePort 到另一個(gè)頁(yè)面。 這個(gè)過(guò)程可能需要通過(guò)主進(jìn)程 使用 ipcRenderer.postMessage() 中轉(zhuǎn)消息。 通過(guò)消息端口進(jìn)行的后續(xù)通信是直連的,不會(huì)繞過(guò)主進(jìn)程。

幾分鐘后我應(yīng)用的 Tray 消失了。?

當(dāng)用來(lái)存儲(chǔ) Tray 的變量被垃圾回收時(shí),就會(huì)發(fā)生這種情況。

你可以參考以下兩篇文章來(lái)了解為什么會(huì)遇到這個(gè)問(wèn)題:

如果你只是要一個(gè)快速的修復(fù)方案,你可以用下面的方式改變變量的作用域,防止這個(gè)變量被垃圾回收。

const { app, Tray } = require('electron')
app.whenReady().then(() => {
  const tray = new Tray('/path/to/icon.png')
  tray.setTitle('hello world')
})

改為

const { app, Tray } = require('electron')
let tray = null
app.whenReady().then(() => {
  tray = new Tray('/path/to/icon.png')
  tray.setTitle('hello world')
})

我在 Electron 中無(wú)法使用 jQuery、RequireJS、Meteor、AngularJS。

因?yàn)?Electron 在運(yùn)行環(huán)境中引入了 Node.js,所以在 DOM 中有一些額外的變量,比如 moduleexports 和 require。 這導(dǎo)致 了許多庫(kù)不能正常運(yùn)行,因?yàn)樗鼈円残枰獙⑼淖兞考尤脒\(yùn)行環(huán)境中。

我們可以通過(guò)禁用 Node.js 來(lái)解決這個(gè)問(wèn)題,在Electron里用如下的方式:

// 在主進(jìn)程中.
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({
  webPreferences: {
    nodeIntegration: false
  }
})
win.show()

假如你依然需要使用 Node.js 和 Electron 提供的 API,你需要在引入那些庫(kù)之前將這些變量重命名,比如:

<head>
<script>
window.nodeRequire = require;
delete window.require;
delete window.exports;
delete window.module;
</script>
<script type="text/javascript" src="jquery.js"></script>
</head>

require('electron').xxx 未定義。?

在使用 Electron 的提供的模塊時(shí),你可能會(huì)遇到和以下類似的錯(cuò)誤:

> require('electron').webFrame.setZoomFactor(1.0)
Uncaught TypeError: Cannot read property 'setZoomLevel' of undefined

很可能是你在過(guò)程中使用了錯(cuò)誤的模塊。 比如,electron.app 只能在主進(jìn)程中使用, 然而 electron.webFrame 只能在渲染進(jìn)程中使用。

文字看起來(lái)很模糊,這是什么原因造成的?怎么解決這個(gè)問(wèn)題呢??

如果 sub-pixel anti-aliasing已被禁用,那么 LCD 屏幕上的字體可能會(huì)看起來(lái)模糊。 示例:


子像素反鋸齒需要一個(gè)包含字體光圖的圖層的非透明背景。 (詳情請(qǐng)參閱這個(gè)問(wèn)題

為了實(shí)現(xiàn)這一目標(biāo),在 BrowserWindow 的構(gòu)造器中設(shè)置背景:

const { BrowserWindow } = require('electron')
const win = new BrowserWindow({
  backgroundColor: '#fff'
})

效果僅可見于(一些) LCD 屏幕。 即使您沒有看到差別,您的一些用戶可能會(huì)看到。 最好始終以這種方式確定背景,除非你有理由不這樣做。

注意到,僅設(shè)置 CSS 背景并不具有預(yù)期的效果。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)