Создать приложение React без повторного использования существующей вкладки - PullRequest
0 голосов
/ 10 декабря 2018

Я занимаюсь разработкой веб-приложения (в течение нескольких месяцев), которое основано на CRA .Все работало так, как задумано, до сегодняшнего утра, когда я понял, что стартовый скрипт npm (или yarn) больше не использует существующую вкладку, открытую в Chrome.Вместо этого он открывает новую вкладку на локальном хосте: 3000, даже если на локальном хосте есть 3000 вкладок.Я изучал это в течение нескольких часов, но мне еще предстоит найти решение.Я добавил оператор log в сценарий CRA (в моих модулях узла), который обрабатывает повторное использование существующих вкладок при запуске приложения.

function startBrowserProcess(browser, url) {
  // If we're on OS X, the user hasn't specifically
  // requested a different browser, we can try opening
  // Chrome with AppleScript. This lets us reuse an
  // existing tab when possible instead of creating a new one.
  const shouldTryOpenChromeWithAppleScript =
    process.platform === 'darwin' &&
    (typeof browser !== 'string' || browser === OSX_CHROME);

  if (shouldTryOpenChromeWithAppleScript) {
    try {      
      // Try our best to reuse existing tab
      // on OS X Google Chrome with AppleScript
      execSync('ps cax | grep "Google Chrome"');
      execSync('osascript openChrome.applescript "' + encodeURI(url) + '"', {
        cwd: __dirname,
        stdio: 'ignore',
      });
      return true;
    } catch (err) {
      console.log(err);
      // Ignore errors.
    }
  }

Это вывод оператора журнала:

{ Error: Command failed: osascript openChrome.applescript "http://localhost:3000/"
    at checkExecSyncError (child_process.js:621:11)
    at execSync (child_process.js:658:13)
    at startBrowserProcess (/Users/***/Desktop/WorkSpace/React/***/node_modules/react-dev-utils/openBrowser.js:78:7)
    at openBrowser (/Users/***/Desktop/WorkSpace/React/***/node_modules/react-dev-utils/openBrowser.js:122:14)
    at Server.devServer.listen.err (/Users/***/Desktop/WorkSpace/React/***/node_modules/react-scripts/scripts/start.js:100:7)
    at Server.returnValue.listeningApp.listen (/Users/***/Desktop/WorkSpace/React/***/node_modules/webpack-dev-server/lib/Server.js:604:10)
    at Object.onceWrapper (events.js:273:13)
    at Server.emit (events.js:182:13)
    at emitListeningNT (net.js:1328:10)
    at process.internalTickCallback (internal/process/next_tick.js:72:19)
  status: 1,
  signal: null,
  output: [ null, null, null ],
  pid: 2691,
  stdout: null,
  stderr: null }

Кажется, есть проблема с запуском команды Applescript, которая обрабатывает это, но я не уверен, почему.Один из других разработчиков, который работает над тем же приложением локально, не имеет этой проблемы.Одним из изменений, которые я сделал недавно, было обновление до новой MacOS Mojave.Но другой разработчик только что обновился и не имеет этой проблемы.

Кто-нибудь знает, что может быть не так?

1 Ответ

0 голосов
/ 11 декабря 2018

Оказывается, после обновления Mojave я отказал в доступе к интерфейсу Google Chrome из моего терминала.Поэтому не удалось запустить скрипт вкладки «повторное использование».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...