#node.js #browser
#node.js #браузер
Вопрос:
Я хотел бы написать node.js скрипт, который запускает веб-сервер и при запуске сервера открывает страницу в браузере по умолчанию. Для выполнения последнего я попробовал пакет npm «open», который работает отлично, за исключением страниц, доставляемых локальным сервером, только что запущенным. Сценарий выглядит примерно так:
http.createServer(function(request,response){
... usual stuff
}).listen(8001);
open('http://www.localhost:8001/index.html');
Я подозреваю, что причина в том, что сервер фактически не запускается при запуске open
, но я попытался поместить его в таймер, запустив его через несколько секунд, и
результат тот же.
Комментарии:
1. Решено. Я удалил «www.» из URL. Последнее утверждение теперь: open (‘ localhost:8001/index.html ‘ );
Ответ №1:
Вызовите open в обратном вызове.
Например
http.createServer(function(request,response){
... usual stuff
}).listen(8001,function(){
open('http://localhost:8001/index.html');
});
Ответ №2:
это потому, что узел асинхронный ! функция open вызывается до того, как она получит обратный вызов от функции listen ! поэтому всегда делайте что-то после обратного вызова! это не похоже на процедурное программирование ! поэтому используйте : http.createServer(function(request,response){
... usual stuff
}).listen(8001,function(){
open('http://www.localhost:8001/index.html');
});