当我使用时--nolazy
,我最终可以与IntelliJ异步调试,因为断点停在正确的位置.但我找不到任何关于--nolazy
...的文档
什么--nolazy
意思?
这感觉真的很傻,但我不能让节点检查员/ node-debug
工作.
说明说要做npm install然后运行node-debug web.js
.所以我做到了.现在我打开了一个可爱的浏览器窗口,向我展示了带断点的代码......并且不知道用哪个url来实际访问代码.
检查员在http://localhost:8080/debug?port=5858
,终端说:
> node-debug web.js
debugger listening on port 5858
Node Inspector is now available from http://localhost:8080/debug?port=5858
Debugging `web.js`
Run Code Online (Sandbox Code Playgroud)
...
我已尝试点击localhost:5000
(这是我的express.js
端口),但如果我没有node web.js
运行单独的实例,则要么失败,要么如果我有另一个正在运行但是不检查检查器中的任何断点,则成功.
当我去的时候http://localhost:5858/
,我得到:
远程调试会话已经激活
当我去的时候http://localhost:8080/
,我得到:
不能获取 /
(/
路径完全适用于我的服务器.)
我正在尝试在AWS Lambda环境(Node.js 4.3)中运行时调试node.js https库环境中似乎是套接字错误的内容.此问题仅在间歇性地发生且仅在重负载下发生.我的团队已经能够通过负载测试一致地重现该问题,并且我们希望从https模块启用调试日志记录.
我在节点文档中发现我可以通过设置NODE_DEBUG=https
环境变量来启用调试日志记录.但是,我不相信我可以设置环境变量:如何在AWS Lambda上使用环境变量?.此外,我无法更改Lambda用于调用我的函数的命令行.
是否有另一种方法可以创建与设置相同的调试日志记录NODE_DEBUG
?
如果您使用JavaScript或编译的Coffee()编写脚本,则使用node-inspector调试节点应用程序非常简单coffee -c -m script.coffee
.
但是,使用coffeescript require
处理程序时:
require('coffee-script/register');
require('lib/component.coffee');
Run Code Online (Sandbox Code Playgroud)
在我试图调试使用的脚本中node-debug
,我得到:
(function (exports, require, module, __filename, __dirname) { #
^
SyntaxError: Unexpected token ILLEGAL
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
...
Run Code Online (Sandbox Code Playgroud)
就像我require
的文件一样.
我正在尝试做什么?我有我宁愿几个CoffeeScript的文件不会有我想要测试每次编译.
我有一个用 TypeScript 编写的依赖项。依赖项包括 NPM 包中的源映射和原始源。如果我在代码中设置断点,然后单步执行依赖项,它会正确单步执行 TypeScript,而不是编译后的 JavaScript。但是,如果我在 TypeScript 代码中设置断点,然后启动我的应用程序,VSCode 会说
断点被忽略,因为未找到生成的代码(源映射问题?)。
如果我在进入依赖项后设置断点,一切都会正常。
我认为这里的问题是源映射是单向的,所以当我在 TypeScript 源文件中设置断点时,它不知道它在 JavaScript 中的位置(需要通过节点调试器实际设置断点)。一旦 JavaScript 文件打开,VSCode 就能够匹配两个 up and now 断点工作。
所以问题是,如何才能使我的 TS 断点从启动时就起作用,而不必首先单步进入文件?依赖关系是许多文件,并且每次运行都必须重置断点是有问题的,特别是因为我正在调试的特定问题如果花费太长时间(超过几秒)就会遇到套接字连接超时。
我想要的是一种方法来告诉 TypeScript,“在启动调试器时解析这些 JavaScript 文件并同步源映射,以便断点正确匹配”。
我知道一般功能是可用的,因为我可以通过 TypeScript 文件中的断点成功调试依赖项本身(我是依赖项的维护者)。只是当它作为 NPM 模块加载时,似乎丢失了一些信息。
source-maps typescript node-debugger visual-studio-code typescript2.0
我正在尝试用来node-debug
调试我的CLI节点脚本.根据我读过的所有内容,我应该能够运行我的脚本node-debug
,这将启动脚本--debug-brk
,并打开我的浏览器到node-inspector
页面.
这一切似乎都很好.我看到我的脚本没有输出(表示--debug-brk正在工作),我的浏览器打开,它已连接到node-inspector
,如果我杀了node-debug
,检查员会显示它已断开连接.
但是检查器界面是空的.没有代码.没有堆栈跟踪.没有.
没有很多选择node-debug
,并且它们都不会像我们解决我遇到的问题那样.
node-debug myscript.js
Run Code Online (Sandbox Code Playgroud)
产量
debugger listening on port 5858
Node Inspector is now available from http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858
Debugging `myscript.js`
Run Code Online (Sandbox Code Playgroud)
检查员开发控制台
Assertion failed: Unknown experiment canvasInspection
TypeError: Cannot read property 'createSetting' of undefined
Run Code Online (Sandbox Code Playgroud) 当我调试 node rest api 时,我尝试使用 node-inspector
node-inspector
node --debug server.js
这样我就可以使用 localhost:3000/api 调试我的 api...如果我使用 node-debug,就没有办法了。它不会启动端口 3000。
但是我的代码是 ES6,所以在我当前的调试中,我的代码是由 Babel 转译的。
我尝试使用 babel-node-debug 但它似乎也与我使用 node-debug 的情况相同。我可以看到 ES6 代码,但无法通过端口 3000 进行调试。
任何解决方法?
我在命令行上运行此命令:
$ node --inspect --debug-brk test/src/dev/node/define/1.test.js
Debugger listening on ws://127.0.0.1:9229/93a5524a-ae0a-4aa2-a985-3cd6ac6a2b9f
For help see https://nodejs.org/en/docs/inspector
Run Code Online (Sandbox Code Playgroud)
通常,此命令吐出一个URL,然后将其复制并粘贴到浏览器中。有时它还会自动将Chrome打开到正确的URL,这样我就可以立即开始调试,这非常好。但是现在它不会记录要打开的URL,也不会自动打开URL!该死的。
请注意,以下网址不是打开的正确网址:
ws://127.0.0.1:9229/93a5524a-ae0a-4aa2-a985-3cd6ac6a2b9f
Run Code Online (Sandbox Code Playgroud)
有人在Node.js 6+版本中看到了吗?
google-chrome node.js node-inspector node-debugger blink-developer-tools
我正在尝试使用本机节点调试器调试节点子进程.例如,请参阅此回购.
我尝试了所有选项之王,根据:debug1,debug1,debug3(以及我在网上找到的很多其他参考资料).
没有那些选项对我有用..
这是我的示例代码:
index.js:
const spawn = require('child_process').spawn;
const path = require('path');
const ls = spawn('node', [path.resolve('./child.js')], {execArgv: '--debug-brk=4545'});
ls.stdout.on('data', (data) => {
console.log(`stdout: ${data}`);
});
ls.stderr.on('data', (data) => {
console.log(`stderr: ${data}`);
});
ls.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
Run Code Online (Sandbox Code Playgroud)
child.js:
debugger;
const a = 123;
console.log(a);
Run Code Online (Sandbox Code Playgroud)
然后我跑:
node --debug-brk --inspect=9222 index.js
我打开chrome-devtools://devtools/...
镀铬.调试主进程效果很好,我也看到了子进程输出.唯一不起作用的是子过程的调试...
我在这做错了什么?
我认为新的VS Code调试器'use strict';
在文件中停止的原因是由于新版本的Node中有些奇怪的贬损行为,或者是因为我的代码中有一些奇怪的错误。
然后我意识到“突破第一线”是一件事,也是人们想要的。为什么这是一件事?我知道我的脚本有第一行,非常感谢。如果没有的话,我会有更大的问题。那么调试器为什么需要这样做?
我正在尝试使用Atom的软件包'node-debugger'(这里),但我找不到一种方法来为文件添加断点.我尝试使用F9在线,但它什么也没做.任何的想法?
我在Mac El Capitan和节点0.10.40
node-debugger ×11
node.js ×10
debugging ×4
javascript ×2
atom-editor ×1
aws-lambda ×1
babeljs ×1
breakpoints ×1
coffeescript ×1
node-cluster ×1
source-maps ×1
typescript ×1