Tag: 电子

nodeJS / Electron呈现比Chrome更慢的页面

我们正在build立一个电子餐厅POS系统(nodeJS 7.4.0 / Electron 1.6.11)。 对于POS系统来说,速度和可靠性是最重要的两个要求,在花了一些时间来构build应用之后,我们不再确定Electron是否适合我们。 速度似乎是主要问题。 对于testing,我们已经构build了一个应用程序,只显示2“你好世界”的HTML页面,没有任何额外的JavaScript或任何其他资产。 在现代iMac上运行时,在页面之间切换时会有一个很短的延迟,并且应用程序在页面加载之间闪烁白色。 在运行Windows 7的较早版本的PC上,只需要1秒即可在这两页之间切换。 在空白的“Hello World”页面上加载mac的时间是167ms。 现在,直接在Chrome浏览器中运行这两个页面,即可立即加载页面,无需任何加载时间,页面加载之间也不会出现白色闪烁。 networking巡视员40ms。 速度的差异是更加重要的更复杂的页面加载JavaScript文件和图像(即使一切都在本地加载) Electron和Chrome的加载时间大得多的原因是什么,我们会怎么做?

subprocess打开意外的电子窗口

在使用电子制造商或电子包装商之后,我遇到了一个问题,我相信问题是在这个问题上。 如果我用electron .执行代码electron . 它可以很好地工作,但是如果我使用电子构build器或电子打包器构build一个可执行文件,那么当我调用一个subprocess时,会打开该程序的另一个实例,而不会执行所期望的任务。 用电子。 当我点击“转换器”button,它开始按预期将.xml文件转换为PDF。 内置版本 点击之前 点击后 码 点击: e.onclick = () => { let path = document.getElementById("pasta").files[0].path.replace(/\\/g, '/'); let c1 = cp.spawn(process.execPath, [__dirname + '/child.js'], { stdio: ['inherit', 'inherit', 'inherit', 'ipc'] }); c1.send(path); c1.on('message', m => { if(m.name === 'start') { document.getElementById("start").className += " disabled"; } if(m.name === 'process') { document.getElementById("bar").style.width […]

如何在电子申请路线?

我正在客户端显示来自服务器的dynamic数据(作为项目)。 当用户点击某个项目时,他将使用_id指向该项目的视图页面。 例如在MeteorJS ,路由器的创build过程如下: Router.route('/item/:_id', function(){ Session.set("itemId", this.params._id); this.render("navbar", {to:"navbar"}); this.render("itemDetailsB", {to:"main"}); }); 其中:_id将等于项目的ID(已被点击) 我如何检索电子中的_id ?

app和autoUpdater在reactjs中不可用,但在nodejs中可用

我被一个电子问题困住了。 或者反应,我不知道。 我试图创build一个React.Component使用它与electron.autoUpdater。 我在用着 import {app, autoUpdater, dialog} from 'electron'; 在反应组件中,但这些类别都不可用。 在使用require('electron')(这是正常的,ok)时,它们在nodejs中可用,但在reactjs中不可用。 但其余的组件在那里! 有什么我应该包括或需要知道吗? 在nodejs中,可用的模块是: { clipboard: [Getter], crashReporter: [Getter], nativeImage: [Getter], shell: [Getter], app: [Getter], autoUpdater: [Getter], BrowserView: [Getter], BrowserWindow: [Getter], contentTracing: [Getter], dialog: [Getter], globalShortcut: [Getter], ipcMain: [Getter], Menu: [Getter], MenuItem: [Getter], net: [Getter], Notification: [Getter], powerMonitor: [Getter], powerSaveBlocker: [Getter], protocol: [Getter], screen: […]

在Electron中创build多个不同参数的不可见窗口

描述 我正尝试使用隐形窗口作为电子中的任务/线程。 首先我在主进程的for循环中创build一些不可见的窗口。 每个窗口发送一个事件dom-is-ready回来。 只要在主进程中接收到这个数据,带有参数(path)的事件就会返回到窗口,然后窗口创build一个数组并将该数组发送回主进程。 码 主stream程 for(let i = 0; i < paths.length; i++){ invPfWins[i] = new BrowserWindow({ width: 400, height: 400, show: false }); invPfWins[i].loadURL(invisPath); invPfWins[i].webContents.on('did-finish-load', function () { invPfWins[i].show(); }); invPfWins[i].webContents.openDevTools(); } let i = 0; ipcMain.on('dom-is-ready', function (event) { invPfWins[i].webContents.send('start-read-files', paths[i], i++); }); ipcMain.on('files-read-done', function (event, output, id) { console.log(output); pfLists[id] […]

ClojureScript Electron app __dirname返回nil

我正在用ClojureScript写电子应用程序,并得到这个奇怪的行为: (ns hello-world.core (:require [cljs.nodejs :as nodejs])) (nodejs/enable-util-print!) (def electron (nodejs/require "electron")) (def app (.-app electron)) (defn on-ready [] (prn (js* "__dirname"))) ; => nil (defn -main [& args] (prn (js* "__dirname")) ; => "/Users/alex/source/electron-cljs/out" (.on app "ready" on-ready)) (set! *main-cli-fn* -main) 正如你所看到的,__dirname在-main函数中parsing得很好,但是在我的电子“ready”callback函数中返回nil。 为什么不在callback里面工作?

混淆NODE_MODULE错误

我正在使用greenworks SDK。 我不明白这个错误信息。 我不知道它是否告诉我重新编译greenworks-osx64.node或更改我的系统节点设置。 ELECTRON_ASAR.js:173 Uncaught Error: The module '/Users/quantum/ele/electron-quick-start/lib/greenworks-osx64.node' was compiled against a different Node.js version using NODE_MODULE_VERSION 57. This version of Node.js requires NODE_MODULE_VERSION 53. Please try re-compiling or re-installing the module (for instance, using `npm rebuild` or`npm install`). at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:173:20) at Object.Module._extensions..node (module.js:598:18) at Object.module.(anonymous function) [as .node] […]

电子方法callback

我是新来的电子,并试图build立一个应用程序来控制我的Mac智能家居组件。 要做到这一点,我需要很多的HTTP-Request所以想法是为这个工作做一个自己的方法/function。 现在我的问题是,我不知道如何使用这个callback的东西;) 这是我现在的代码: const {app, Tray, Menu, BrowserWindow, net} = require('electron'); const path = require('path'); const iconPath = path.join(__dirname, 'icon.png'); let appIcon = null; let win = null; var http = require('http'); function httpGet(url, callback) { http.get(url, (res) => { const { statusCode } = res; const contentType = res.headers['content-type']; res.setEncoding('utf8'); let rawData = […]

电子重build模块不是通过npm安装的

我正在尝试编译一个c ++插件,它不是通过NPM安装的。 该插件生成和工作完美,但我似乎无法得到电子重build在node_modules目录以外的操作。 项目布局 -ROOT |_ binding.gyp |_ node_modules |_ build |_ Release |_ my-addon.node |_ src |_ my-addon |_my-addon.cc binding.gyp { "targets": [ { "target_name": "my-addon", "sources": [ "src/my-addon/my-addon.cc" ] } ] } 我从我的项目根运行node-gyp,它工作正常。 我可以使用它在一个节点内生成的.node文件处理没有问题。 node-gyp configure build 电子重build 这是我难住的地方。 看起来好像电子重build只想在通过NPM安装的软件包上工作,这些软件包目前驻留在node_modules文件夹中。 $ ./node_modules/.bin/electron-rebuild –module-dir ./build/Release × Rebuild Failed An unhandled error occurred inside electron-rebuild […]

如何在电子应用程序中观看文件?

我想使用Chokidar在我的应用程序中观看文件。 问题是,当你尝试实例化chokidar.watch时,电子会抛出一个错误。 我想知道这是否是一个已知的兼容性问题,以及是否有内置的解决scheme来解决这个问题。 Google迄今为止没有在电子应用程序中观看文件。 只有使用chokidar对象时才会出现错误。 要求它不会导致问题。 我的代码在渲染过程如下。 注释掉var观察者代码将完全消除控制台错误。 代码直接来自他们的文档。 var chokidar = remote.require('chokidar'); chokidar.watch('.', {ignored: /[\/\\]\./}).on('all', function(event, path) { console.log(event, path); }); 控制台错误: Uncaught Error: criterion.test is not a function TypeError: criterion.test is not a function at testCriteria (/Users/guest/Desktop/prototype/yeti-launch/node_modules/chokidar/node_modules/anymatch/index.js:29:26) at Array.some (native) at anymatch (/Users/guest/Desktop/prototype/yeti-launch/node_modules/chokidar/node_modules/anymatch/index.js:59:48) at EventEmitter.FSWatcher._isIgnored (/Users/guest/Desktop/prototype/yeti-launch/node_modules/chokidar/index.js:221:15) at EventEmitter.NodeFsHandler._addToNodeFs (/Users/guest/Desktop/prototype/yeti-launch/node_modules/chokidar/lib/nodefs-handler.js:429:12) at EventEmitter.<anonymous> (/Users/guest/Desktop/prototype/yeti-launch/node_modules/chokidar/index.js:410:12) at […]