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.
答案 0 :(得分:3)
这是一个用于提取网址的bash命令
url=$(grep 'chrome-devtools://' <(node --inspect bin/www.js $@ 2>&1))
<强>解释强>
2>&1
告诉shell将stderr重定向到stdout。node
命令在&lt;(node
)内运行,这称为process substitution,其行为类似于只读文件,其内容为命令的标准输出(Chrome DevTools not able to connect to Node inspect since 7.5.0 {1}}在这种情况下)其他问题
最近提交了一个错误chrome-node-devtools-refresh.sh
报告版本7.4.0正常工作
要从命令行打开chrome-devtools网址需要一些AppleScript,幸运的是有人已经这样做了:
所以命令就是这样:
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
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?