#google-chrome #node.js
#google-chrome #node.js
Вопрос:
Возможно ли это для Node.js запуск на рабочем столе для создания окна браузера Chrome? Я хотел бы запустить браузер Chrome, указав размер окна и местоположение, когда Node.js получает событие.
Являются ли команды sys shell только методологией?
Комментарии:
1. На какой ОС вы хотели бы запустить Chrome?
2. defectracker.com/2019/08/28 / … взгляните на этот пост с примером node.js проект
Ответ №1:
На MacOSX
var childProc = require('child_process');
childProc.exec('open -a "Google Chrome" http://your_url', callback);
//Or could be: childProc.exec('open -a firefox http://your_url', callback);
Еще немного:
- Используйте «open -a» с именем вашего приложения из / Applications и добавьте свои аргументы
- функция обратного вызова вызывается с выводом после завершения
- Ссылка на API: https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback
Ответ №2:
Оформить заказ https://www.npmjs.com/package/chrome-launcher:
Запустите chrome:
const chromeLauncher = require('chrome-launcher');
chromeLauncher.launch({
startingUrl: 'https://google.com'
}).then(chrome => {
console.log(`Chrome debugging port running on ${chrome.port}`);
});
Запуск безголового Chrome:
const chromeLauncher = require('chrome-launcher');
chromeLauncher.launch({
startingUrl: 'https://google.com',
chromeFlags: ['--headless', '--disable-gpu']
}).then(chrome => {
console.log(`Chrome debugging port running on ${chrome.port}`);
});
chrome-launcher открывает порт удаленной отладки, поэтому вы также можете управлять экземпляром браузера с помощью протокола DevTools.
Puppeteer — это еще один способ запустить Chrome и взаимодействовать с ним, используя высокоуровневые API.
Комментарии:
1. Я не смог запустить Chrome без заголовка, используя localhost-url, и мне пришлось добавить
--no-sandbox
(см.: Github-Проблема )2. спасибо @ebidel за запрет Puppeteer
Ответ №3:
С opn:
const opn = require('opn');
opn('http://siteurl.com/', {app: ['google chrome']});
Комментарии:
1. opn устарел и переименован в new как ‘open’
2. «opn» изменил имена на «открыть» npmjs.com/package/open Это намного лучше для моего варианта использования, потому что это просто открывает новую вкладку вместо создания нового экземпляра Chrome без авторизованного пользователя Chrome. Это более реально и лучше для разработчиков, потому что именно так пользователи фактически заходят на ваш веб-сайт (сохраняя кэш, cookies, localStorage и т.д.).
Ответ №4:
Я открываю новую вкладку Firefox в Windows здесь:https://github.com/Sequoia/FTWin/blob/master/FTWin.n.js
Наиболее заметная часть:
var cp = require('child_process'),
url_to_open = 'http://duckduckgo.com/';
cp.spawn('c:\Program Files (x86)\Mozilla Firefox\firefox.exe', ['-new-tab', url_to_open]);
Примечание:
- Передаю полный путь к firefox в child_process.spawn
- Экранирование косых черт
- Передача переключателей / аргументов в firefox.exe: передается в качестве второго параметра cp.spawn в виде массива (по одной записи на коммутатор).
Этот вызов эквивалентен вводу "c:Program Files (x86)Mozilla Firefoxfirefox.exe" -new-tab http://duckduckgo.com
в командной строке Windows.
Для chrome вам нужно что-то вроде D:UserssequoiaAppDataLocalGoogleChromeApplicationchrome.exe --new-tab http://duckduckgo.com/
Я позволю вам самостоятельно разработать версию child_process 😉
Ссылки:
Комментарии:
1. Для запуска браузера Chrome с опциями в Windows я пытался,
cp.spawn('c:\Program Files (x86)\Google\Chrome\Application\chrome.exe' , [ '--user-data-dir','C:chrome-path' ]
кажется ‘C:chrome-path ‘ в этом случае рассматривается как URL. Есть идеи по устранению этой проблемы? Спасибо!2. попробуйте
['--user-data-dir=C:chrome-path']
? Или заключите в кавычки[ '--user-data-dir','"C:chrome-path"' ]
или попробуйте избежать косой черты[ '--user-data-dir','C:\chrome-path' ]
. Удачи!
Ответ №5:
Да, я бы подумал, что вам нужно будет выйти в shell, а затем открыть chrome.
Ответ №6:
Узел может это сделать, только если вы вызываете команду UNIX / Windows, поэтому только команду sys shell.
Ответ №7:
Это можно сделать с помощью открытого пакета npm.
app.listen(PORT, (err) => {
if (err) console.log(err);
else open(`http://localhost:${PORT}`, { app: "google chrome" });
});
Мы можем указать любой браузер во втором параметре с функцией open.
Ответ №8:
Этот ответ не поможет, если вам нужна сохраненная информация chrome или chrome как таковой.
https://github.com/puppeteer/puppeteer
https://www.npmjs.com/package/puppeteer
В любом случае, когда вам явно не нужна предыдущая локально сохраненная информация, я предлагаю использовать экземпляр puppeteer. Он охватывает все ресурсы браузера, такие как хранилища и т. Д
Ответ №9:
var exec = require('child_process').exec
exec('open firefox www.google.pt' , function(err) {
if(err){ //process error
}
else{ console.log("success open")
}
})
Это открывает firefox на странице Google из скрипта nodejs, для chrome должно быть то же самое
Комментарии:
1. ‘open chrome’ ничего не делает на моем Mac OSX 10.8.2 (очевидно, с установленным chrome)
2. в Windows
exec('start chrome www.google.com', function (err) {
3. Не уверен, как был принят этот ответ… Я предполагал, что это работает на Mac (конечно, не на Windows или Linux), но комментарии указывают, что это не так. На какой платформе это действительно работает?
4. Я не настолько знаком с OS X, но я думаю, что
-a
флаг необходим для открытия приложения с помощьюopen
команды.5. Не голосовал против, потому что это была правильная идея, но более конкретная помогла бы. Для mac OS MaxRD сделал свое дело за меня