使用PHPStorm 6/7(或者我猜想是WebStorm),是否可以配置调试会话,以便它能够理解并使用管道在PHPStorm控制台中显示更方便的显示?我正在开发一个使用bunyan的nodejs应用程序。我希望PHPStorm能够像在终端上启动应用程序一样打印调试输出。
以下是配置示例:
但是它试图运行的命令是:
/usr/local/bin/node --debug-brk=57073 app.js -vv 2>&1 "|" bunyan
如果它不引用管道符号,它可能会起作用,但我不确定。
答案 0 :(得分:4)
管道是命令行shell的一个功能,PhpStorm不使用shell来启动配置,因此管道和输出重定向将不起作用。
略有相关的问题:
您可以在node
周围破解一些包装器shell脚本,并使用它而不是默认的node
脚本。您的自定义shell脚本可以以自己的方式解析参数并执行管道。不确定它的效果如何。
答案 1 :(得分:3)
我发现这个问题有一个hacky解决方案,我也遇到过。我的解决方案不包括WebStorm中的任何配置更改。我只是创建了一个使用bunyan
CLI工具解析的管道输出,该工具通过节点spawn 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);
答案 2 :(得分: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);
答案 3 :(得分:2)
我将节点包装到shell脚本中以实现此目的。 这是脚本:
#!/usr/bin/env bash
node $@ | ./node_modules/.bin/bunyan
您永远不需要修改代码库以便在IDE中进行断点调试。
要使用它,只需修改运行配置即可将此脚本用作Node interpreter
。