创建React App而不重用现有标签

时间:2018-12-10 19:49:57

标签: javascript reactjs macos create-react-app

(几个月以来)我一直在开发基于CRA的Web应用程序。直到今天早上,一切都按预期进行,直到我意识到npm(或yarn)启动脚本不再使用在Chrome中打开的现有标签。而是在localhost:3000处打开一个新选项卡,即使在localhost:3000处已存在选项卡。我已经对此进行了几个小时的调查,但尚未找到解决方案。我在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.
    }
  }

这是log语句的输出:

{ 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。但是其他开发人员也刚刚进行了升级,因此没有此问题。

有人知道怎么了吗?

2 个答案:

答案 0 :(得分:1)

为避免打开新标签页, 您需要在项目的根目录中创建一个.env文件,并添加以下行, 浏览器=无。 如图here

答案 1 :(得分:0)

在升级Mojave之后,我拒绝了从终端访问Google Chrome的界面。因此它无法运行“重用”标签脚本。