【问题标题】:Why does VSCode debugger generate an incomplete command in the terminal and fail to launch?为什么 VSCode 调试器会在终端生成不完整的命令而无法启动?
【发布时间】:2021-12-16 08:16:32
【问题描述】:

我在尝试在 VSCode 中调试 Node.js 应用时看到一些奇怪的行为。

  • 当我选择要运行和调试的配置时,它会在集成终端的命令行中生成一些代码。
  • 但是,代码被截断,因此命令不完整。剪辑的数量似乎与我在~/.zshrc 文件中导出的路径有关。
  • 当我删除 .zshrc 文件中的所有 PATH 导出时,它似乎生成了正确的命令,但是,它不会自动运行 - 它会等待,未完成,直到我单击该行并按 Enter 键。然后运行。
  • 在我第一次执行此操作后,它会正确运行,而无需用户(我)单击并回车)
  • 当我这样做时,它似乎运行了两次 - 它两次输出相同的文本,第一次以 % 终止,然后在生成相同文本的位置开始新行。

生成的脚本:

/bin:/Users/USERNAME/.nvm/versions/node/v14.17.1/bin:/Users/USERNAME/.pyenv/shims:/Users/USERNAME/.pyenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands' 'NODE_OPTIONS=--require "/Applications/Visual Studio Code.app/Contents/Resources/app/extensions/ms-vscode.js-debug/src/bootloader.bundle.js" --inspect-publish-uid=http' 'VSCODE_INSPECTOR_OPTIONS={"inspectorIpc":"/var/folders/tv/3png1fgn2071ql5yd6n2rjgw0000gn/T/node-cdp.3142-1.sock","deferredMode":false,"waitForDebugger":"","execPath":"/Users/USERNAME/.nvm/versions/node/v14.17.1/bin/node","onlyEntrypoint":false,"autoAttachMode":"always","fileCallback":"/var/folders/tv/3png1fgn2071ql5yd6n2rjgw0000gn/T/node-debug-callback-0ecc30434e46d30d"}' /Users/USERNAME/FOLDER/PROJECT/REPO/node_modules/nodemon/bin/nodemon.js --nolazy .

(我已经重命名了 CAPS 中列出的项目)

请注意,这发生在使用不同版本 Node 的不同存储库中,而不仅仅是命令行输出列出的那个(即:v14.17.1)

在尝试进行故障排除时,我已经从我的.zshrc 文件中完全删除或卸载(并重新安装)了 VSCode、Node、NVM、PATH 导出,但它仍在发生。不清楚从这里去哪里。

编辑:
这看起来与 VSCode 调试器上的帖子未启动或附加有关,但尚未找到任何解决问题的方法。

edit2:
我可以发誓我的终端输入的最大限制(MacOS 11.6,zsh)正在运行。我知道这是由操作系统决定的,而不是您使用的外壳。

我的ARG_MAX 看起来很大:

> ~ getconf ARG_MAX
1048576

【问题讨论】:

    标签: node.js macos visual-studio-code vscode-debugger


    【解决方案1】:

    看起来这是因为我的 PATH 变量的值的长度,并且它运行到 MacOS 的最大限制。在尝试了很多事情之后,在我更改了向PATH 添加内容的方式后,这个问题终于得到了解决。

    我可以看到我的 VSCode 调试器的剪辑终端调用始终为 1024 个字符或大约 1024 个字符,以下导出到 PATH

    export PATH=$HOME/bin:/usr/local/bin:$PATH
    export PATH="/usr/local/opt/openssl@1.1/bin:$PATH" # moved to .profile
    export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
    

    我将它更新为这个,这使我调用的 VSCode 终端调试器调用达到大约 800 个字符。

    PATH="/usr/local/bin:$(getconf PATH)"
    

    【讨论】:

    • 我看到我正在设置 PATH 而不是导出它 - 我没有调查过,但从那时起就没有问题了。更多详情请访问unix.stackexchange.com/q/138504
    猜你喜欢
    • 1970-01-01
    • 2022-11-11
    • 2018-07-31
    • 2021-07-09
    • 2019-06-09
    • 2020-11-13
    • 2020-12-15
    • 2019-10-21
    • 2021-01-21
    相关资源
    最近更新 更多