3

Using PHPStorm 6/7 (or WebStorm I guess), is it possible to configure a debug session so that it understands and uses piping to have a more convenient display in the PHPStorm console? I'm working on a nodejs app that utilizes bunyan. I'd like for PHPStorm to be able to pretty print the debug output as it would if I launched the app from the terminal.

Here's an example config:

examle phpstorm debug config

But the command it's trying to run is:

/usr/local/bin/node --debug-brk=57073 app.js -vv 2>&1 "|" bunyan

If it wouldn't quote the pipe symbol, it might work, but I'm not sure.

4

4 回答 4

4

管道是命令行 shell 的一个特性,PhpStorm 不使用 shell 来启动你的配置,所以管道和输出重定向将不起作用。

稍微相关的问题:

您可能可以破解一些包装外壳脚本node并使用它而不是默认node脚本。您的自定义 shell 脚本可以以自己的方式解析参数并执行管道。不确定它的效果如何。

于 2013-10-29T20:00:56.073 回答
4

对于我也遇到的这个问题,我找到了一个 hacky 解决方案。我的解决方案不包括 WebStorm 中的任何配置更改。我只是创建了一个管道输出,该输出使用bunyan通过 node spawn 加载的 CLI 工具进行解析child_process

代码如下所示:

bunyan = require('bunyan');
logOptions = { name: 'myApp' };

// Activate this logger only for development and leave the original for production
if ( process.env.NODE_ENV === 'development' ) {
    spawn = require('child_process').spawn;
    bunyanCLI = spawn('bunyan', ['--color'], { stdio: ['pipe', process.stdout] });
    logOptions.stream = bunyanCLI.stdin;
} 

log = bunyan.createLogger(logOptions);
于 2014-07-03T18:12:53.800 回答
3

我找到了使用bunyan-prettystream包将buyan 记录到WebStorm 控制台的更好解决方案。

我正在使用的代码如下所示:

bunyan = require('bunyan');
logOptions = { name: 'myApp' };

if (process.env.NODE_ENV === 'development') {
  var PrettyStream = require('bunyan-prettystream');
  var prettyStdOut = new PrettyStream();
  prettyStdOut.pipe(process.stdout);
  logOptions.stream = prettyStdOut;
}

log = bunyan.createLogger(logOptions);
于 2016-07-16T23:09:20.750 回答
2

我将 node 包装到一个 shell 脚本中来实现这一点。这是脚本:

#!/usr/bin/env bash

node $@ | ./node_modules/.bin/bunyan

您永远不需要修改代码库以便在 IDE 中进行断点调试。

要使用它,只需修改您的运行配置以将此脚本用作Node interpreter.

于 2016-03-31T17:27:48.757 回答