Console 是否可以通过另一个命令管道调试配置?

Console 是否可以通过另一个命令管道调试配置?,console,pipe,phpstorm,Console,Pipe,Phpstorm,使用PHPStorm 6/7(或者我猜是WebStorm),是否可以配置调试会话,以便它理解并使用管道在PHPStorm控制台中进行更方便的显示?我正在开发一个利用班扬语的nodejs应用程序。我希望PHPStorm能够像从终端启动应用程序一样漂亮地打印调试输出 下面是一个配置示例: 但它试图运行的命令是: /usr/local/bin/node--debug brk=57073 app.js-vv 2>&1“|”bunyan 如果它不引用管道符号,它可能会工作,但我不确定。管道是命令行she

使用PHPStorm 6/7(或者我猜是WebStorm),是否可以配置调试会话,以便它理解并使用管道在PHPStorm控制台中进行更方便的显示?我正在开发一个利用班扬语的nodejs应用程序。我希望PHPStorm能够像从终端启动应用程序一样漂亮地打印调试输出

下面是一个配置示例:

但它试图运行的命令是:

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


如果它不引用管道符号,它可能会工作,但我不确定。

管道是命令行shell的一个功能,PhpStorm不使用shell启动配置,因此管道和输出重定向将无法工作

稍微相关的问题:


您可能可以在
节点
周围破解一些包装外壳脚本,并使用它来代替默认的
节点
脚本。自定义shell脚本可以以自己的方式解析参数并执行管道。不确定它会工作得多好。

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

代码如下所示:

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);

为了实现这一点,我将节点包装到shell脚本中。 以下是脚本:

#!/usr/bin/env bash

node $@ | ./node_modules/.bin/bunyan
您不应该为了在IDE中中断点调试而修改代码库


要使用它,只需修改您的运行配置,将此脚本用作
节点解释器

,我找到了使用该包将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);

考虑到你的最终目标是通过班扬传递你的输出,你应该看看这个问题,感谢达斯汀。现在我可以用漂亮的日志在Webstorm中正确地调试:)谢谢你的贡献。我使用了代码,注意到当节点退出时,一些日志没有打印到stdout,这可能是由于被管道传输到另一个进程。我试过Shawn的模块,它适用于这个案例。