Невозможно открыть окно браузера с узла (размещенного на heroku)

У меня есть приложение NodeJs, размещенное на Heroku. В рамках аутентификации я хочу открывать окно браузера, когда пользователь обращается к маршруту /login.

Я использую для этого "открытую" библиотеку Node и передаю URL-адрес в качестве параметра. Хотя это работает на локальном компьютере, и Node открывает окно браузера (с этим URL-адресом), но это не так, когда он размещен на Heroku.

Итак, я хотел бы понять, есть ли у платформы Heroku какие-либо ограничения на выполнение таких действий, и какие еще шаги мне следует предпринять для решения этой проблемы.

Я пробовал открытые и открывающие библиотеки.

Пример кода с библиотекой открывателей.

  var opener = require("opener");

  url = 'https://exampleapp.herokuapp.com';
  opener(url);

  return;

1 ответ

Чтобы перенаправить пользователя на страницу после определенного, даже на той же странице, вы можете сделать простое (при условии, что вы используете экспресс с Nodejs):

res.redirect() или res.download() если вы хотите, чтобы вместо этого пользователь мог загрузить элемент.

В противном случае, если вы хотите, чтобы новое окно открывалось с новой страницей (не переопределяя предыдущую страницу, на которой они были), вам понадобится дополнительный модуль для этого, так как express не обрабатывает сторонний код браузера: я рекомендую Puppeteer с этим примером кода:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({headless: false});
  const page = await browser.newPage();
  await page.goto(url);

  await browser.close();
})();

В {headless: false} параметр в функции puppeteer.launch() функция откроет новую вкладку в браузере пользователя.

Другие вопросы по тегам