电子应用程序不会启动,准备就绪时不存在
Posted
技术标签:
【中文标题】电子应用程序不会启动,准备就绪时不存在【英文标题】:Electron app won't start, whenready does not exist 【发布时间】:2020-07-18 15:46:57 【问题描述】:我已经做了几天了,我已经从 Electron GitHub 克隆了电子快速启动(https://github.com/electron/electron-quick-start)我收到了这个错误,但它不仅仅是这个应用程序,而是全部应用程序。我不知道发生了什么。 电子最新版本:8.2.0 错误
app.whenReady().then(createWindow)
^
TypeError: Cannot read property 'whenReady' of undefined
at Object.<anonymous> (/Users/user/Downloads/electron-quick-start-master/main.js:25:5)
at Module._compile (internal/modules/cjs/loader.js:1147:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1167:10)
at Module.load (internal/modules/cjs/loader.js:996:32)
at Function.Module._load (internal/modules/cjs/loader.js:896:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
代码:
const electron = require('electron')
// Modules to control application life and create native browser window
const app, BrowserWindow = require('electron')
const path = require('path')
function createWindow ()
// Create the browser window.
const mainWindow = new BrowserWindow(
width: 800,
height: 600,
webPreferences:
preload: path.join(__dirname, 'preload.js')
)
// and load the index.html of the app.
mainWindow.loadFile('index.html')
// Open the DevTools.
// mainWindow.webContents.openDevTools()
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.whenReady().then(createWindow)
// Quit when all windows are closed.
app.on('window-all-closed', function ()
// On macOS it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform !== 'darwin') app.quit()
)
app.on('activate', function ()
// On macOS it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (BrowserWindow.getAllWindows().length === 0) createWindow()
)
// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and require them here.
包JSON
"name": "electron-quick-start",
"version": "1.0.0",
"description": "A minimal Electron application",
"main": "main.js",
"scripts":
"start": "electron ."
,
"repository": "https://github.com/electron/electron-quick-start",
"keywords": [
"Electron",
"quick",
"start",
"tutorial",
"demo"
],
"author": "GitHub",
"license": "CC0-1.0",
"devDependencies":
"electron": "^8.2.0"
【问题讨论】:
你应该尝试更新 Electronapp.on('ready', createWindow);
尝试在当前版本中使用它。
electron 是最新版本(8.2.0)
【参考方案1】:
本身并不是一个答案——我刚刚在我目前正在从事的 Electron
项目中尝试过这个,它运行良好:
app.whenReady().then((choice) =>
console.log("hey, I'm ready", choice);
)
对于现实检查,我建议使用 ready 事件:
app.on('ready', function ()
console.log("hey, I'm ready too!");
);
虽然我不禁要问:你使用的是什么版本的Electron
?如果您使用的是 pre-7 或 8 版本,他们还没有开始“承诺”的东西(我忘记了哪个版本开始使用 Promises
)
【讨论】:
试过了:TypeError: Cannot read property 'on' of undefined @Wexion - 这很奇怪。如果遇到这种情况,我会console.log(app)
以确保正在导入app
。听起来不像。【参考方案2】:
您的电子版本低于 v3.0.0。
我们可以使用 3.0.0 版本中的whenReady()
。
建议您更新您的电子版。
【讨论】:
虽然这是真的,但我不确定这是否是手头的错误。在 Electron 2 上,这种情况下您会收到TypeError: app.whenReady is not a function
错误。对于用户来说,app
本身似乎是未定义的。
嗯,该应用程序在 v2 中可用。只是应用内没有声明 whenReady 函数。
无论如何,我想知道如果@Wexion 使用正确的快速启动存储库,他为什么会面临这样的错误。
实际上,这个 starter repo 使用的是 electron v8。而且看起来效果不错。
idk,是我的节点或电子安装搞砸了,我确实做了 npm i --save-dev electron【参考方案3】:
感谢大家帮助我,但我已经解决了这个问题: 我所要做的就是在前两行后面加上分号,
const app, BrowserWindow = require('electron');
const path = require('path');
不是这个
const app, BrowserWindow = require('electron')
const path = require('path')
【讨论】:
实际问题是因为您显示的 2 之后的代码行。您可能有一个立即调用的函数表达式。以上是关于电子应用程序不会启动,准备就绪时不存在的主要内容,如果未能解决你的问题,请参考以下文章
Helm 等待依赖项部署在 kubernetes 上准备就绪
Cordova watchPosition 不会重新启动手机上的 GPS 请求