Open url given by stdout from node --inspect command

时间:2017-03-02 23:38:23

标签: node.js bash macos

Alright here's a fun one, we get the following stdout:

Debugger listening on port 9229.
Warning: This is an experimental feature and could change at any time.
To start debugging, open the following URL in Chrome:
    chrome-devtools://devtools/remote/serve_file/@60cd6e859b9f557d2312f5bf532f6aec5f284980/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/a7a2a58d-dfd1-4cc6-875c-47da78adeb1b

when we run a command like so:

node --inspect --debug-brk bin/www.js

I was thinking of creating a bash script like this:

#!/usr/bin/env bash

NODE_DEBUG_OUTPUT=$(node --inspect --debug-brk bin/www.js)
open -a "/Applications/Google Chrome.app"/ getUrl(${NODE_DEBUG_OUTPUT})

but here's where my bash skills end - how can I implement the getUrl function so that I can get the url from the output?

I am pretty certain that if we pass a url to the open function in bash, it will open a browser, in this case though it has to be Google Chrome browser.

3 个答案:

答案 0 :(得分:3)

这是一个用于提取网址的bash命令

url=$(grep 'chrome-devtools://' <(node --inspect bin/www.js $@ 2>&1))

<强>解释

其他问题

  • 最近提交了一个错误chrome-node-devtools-refresh.sh

  • 报告版本7.4.0正常工作

  • 要从命令行打开chrome-devtools网址需要一些AppleScript,幸运的是有人已经这样做了:

  

here

所以命令就是这样:

node

答案 1 :(得分:1)

替代

所以我可能没有回答你的问题但是我想把它作为你想要解决的更高问题的一个更简单的解决方案。

有一个名为npm的{​​{1}}个包。该软件包提供了与chrome dev-tools相同的功能。以下是他们的github页面中的描述:

  

Node Inspector是Node.js应用程序的调试器接口   使用Blink开发人员工具(以前称为WebKit Web Inspector)。

你如何安装?

node-inspector

你如何使用?

npm install -g node-inspector

其中node-debug app.js 是您的js文件。您可以在案件中app.js

它做了什么?

这是一个显示它的功能的GIF

enter image description here

摘要

node-debug bin/www包可以帮助您实现所需的功能。即启动chrome来调试你的js代码。我觉得这是一个更容易的选择。如果您有

,还可以阅读更多相关内容以探索其他用例

来自此软件包的开发人员:

  

node-debug命令将在默认情况下加载Node Inspector   浏览器。

     

注意:Node Inspector仅适用于Chrome和Opera。你必须   如果是其他浏览器,请在其中一个浏览器中重新打开检查器页面   是您的默认Web浏览器(例如Safari或Internet Explorer)。节点   Inspector的工作方式与Chrome Developer Tools完全相同。阅读   优秀的DevTools概述即将开始。

答案 2 :(得分:-1)

这真的很接近!唯一不起作用的是Chrome实际上并没有打开网址,只是打开google.com

export PATH=$PATH:/Applications/Google\ Chrome.app/Contents/MacOS/

(node --inspect --debug-brk bin/www.js $@ &> debug-server.log) &

sleep 1;  // wait for the stdout to get written to file...

LINE=$(grep -n "chrome-devtools" debug-server.log | awk '{print $2}')

echo " => Supposed chrome-devtools link => '$LINE'";

Google\ Chrome "${LINE}"

任何人都知道为什么&#34; Google \ Chrome&#34;命令不会打开作为第一个参数提供的URL?