Как я могу записывать данные или сообщения на консоль в моем приложении Electron?
Этот действительно простой привет мир открывает инструменты разработчика по умолчанию, я не могу их использовать console.log('hi')
. Есть ли альтернатива Электрону?
main.js
var app = require('app');
var BrowserWindow = require('browser-window');
require('crash-reporter').start();
var mainWindow = null;
app.on('window-all-closed', function() {
// Mac OS X - close is done explicitly with Cmd + Q, not just closing windows
if (process.platform != 'darwin') {
app.quit();
}
});
app.on('ready', function(){
mainWindow = new BrowserWindow({ width: 800, height: 600});
mainWindow.loadUrl('file://' + __dirname + '/index.html');
mainWindow.openDevTools();
mainWindow.on('closed', function(){
mainWindow = null;
});
});
console.log()
перейти к основному процессу из процесса рендеринга?./path/to/release/MyProgram.app/Contents/MacOS/MyProgram
. Это запустит двоичный файлMyProgram
и позволит вам просматриватьconsole.log
события процесса в терминале.app.relaunch()
иapp.exit(0)
???Вы также можете добавить переменную среды в окнах:
Это выведет консольные сообщения на ваш терминал.
источник
true
и что установка для негоtrue
«печатает внутреннее ведение журнала Chrome на консоль», что не то, что хочет OP.ELECTRON_ENABLE_LOGGING=1
. А что же тогда хочет ОП? Взгляните на следующую суть, чтобы увидеть эффект.set ELECTRON_ENABLE_LOGGING=true
Есть еще один способ входа в консоль изнутри процесса рендеринга. Учитывая, что это Electron, вы можете получить доступ к собственным модулям Node. Сюда входит
console
модуль.Когда этот код запускается изнутри процесса рендеринга, вы попадете
Hello World!
в терминал, с которого запускали Electron.См. Https://nodejs.org/api/console.html для получения дополнительной документации по
console
модулю.источник
Еще одна возможность - получить доступ к главной консоли процесса с помощью
remote.getGlobal(name)
:источник
ELECTRON_ENABLE_LOGGING=1
(см. ОтветДобавляя к ответу М. Дамиана, вот как я его настроил, чтобы получить доступ к консоли основного процесса с любого средства визуализации.
В основном приложении добавьте:
В любом рендерере вы можете добавить:
источник
источник
Вы можете использовать электронный журнал пакета npm https://www.npmjs.com/package/electron-log
Он будет регистрировать ваши ошибки, предупреждения, информацию, подробные, отладочные, глупые результаты в вашем собственном журнале ОС.
источник
Это продолжение ответа cscsandy5 для дополнительной информации, информация отсюда
Этот код отлично подходит для вывода простого сообщения отладки в окно терминала, из которого вы запустили электронное приложение, и на его основе строится console.log.
Вот пример фрагмента (на основе учебника по электронике tutorialspoint) сценария jQuery, который будет писать приветствие терминалу при каждом нажатии кнопки (предупреждение: вам необходимо добавить собственные разрывы строк в выходные строки!)
источник
Все, что написал Алекс Уоррен, правда. Здесь важно то, как запускается Электрон. Если вы используете стандартный сценарий в файле package.json, он не будет работать. Чтобы заставить
console.log()
работать, замените старый скрипт на этот новый.Старый:
Новый:
Теперь все
console.log()
звонки отображаются и в терминале.источник
Вот что я использую:
Пример использования (такой же, как
console.log
):Источник: https://github.com/fuse-box/fuse-box-electron-seed/tree/master/src/main в файле logger.js, здесь вы можете увидеть реальный вариант использования.
источник
После некоторого расследования, вот мое понимание:
Код
(1) main.js
Примечание: которые используются
openDevTools
для открытияElectron Dev Tools
(2) render.js
(3)
render.js
вызывается:index.html
console.log
Выходная логика
main process
=NodeJS process
= здесьElectron UI process
console.log
inmain.js
будет выводить журнал сюдаrender process
console.log
inrender.js
будет выводить журнал сюдаПример снимка экрана
./node_modules/.bin/electron .
eletron-builder
/path_to_your_packaged_mac_app/xxx.app/Contents/MacOS/yourBinaryExecutable
export ELECTRON_ENABLE_LOGGING=true
,render.js
console.log ТАКЖЕ вывод наmain process
терминалисточник
Извините, что поднял старую ветку, но это лучший результат "как вывести console.log на терминал" (или аналогичные поисковые запросы.
Для тех, кто хочет получить немного больше контроля над тем, что выводится на терминал, вы можете использовать webContents.on ('console-message') следующим образом:
Видеть:
webContents Документация
запись webContents в документах BrowserWindow
источник
console.log()
отлично подойдет для отладки. Посколькуelectron
он построен поверх браузера, онDevTools
поддерживает, что вы можете использовать инструменты разработчика для отладки. Однако есть истерическое поведениеconsole.log()
метода. Когда вы вызываетеconsole.log()
изmain process
электронного приложения, оно выводится в окно терминала, откуда вы только что запустили приложение, а когда вы вызываете его изrenderer process
него, выводится в консоль DevTools.источник
При этом вы можете использовать инструменты разработчика в главном окне браузера для просмотра журналов.
Пример
logEverywhere('test')
будет выведен// test
на консольную панель инструментов разработчика главного окна браузера.Возможно, вам потребуется улучшить этот метод, чтобы он принимал несколько аргументов (вы можете сделать это с помощью оператора распространения es6)
источник
Что ж, это 2019 год, и я не могу поверить, что никто не упомянул этот трюк во всех ответах выше. Хорошо, а как насчет входа в консоль браузера прямо из главного окна? Я дал свой ответ здесь: https://stackoverflow.com/a/58913251/8764808 Взгляните.
источник