一尘不染

IntelliJ IDEA如何正确将$ NODE_DEBUG_OPTION传递给npm-run-all

node.js

在我的 Ubuntu 16.04上, 我将 IntelliJ IDEA ultima 2017.2节点v6.11.2npm
v3.10.10 一起使用,并想调试一个具有以下 package.json 开始 条目的node.js应用程序:

"start:" "npm-run-all --parallel serve-static open-static"

根据控制台输出和类似的SO问题我需要添加 $ NODE_DEBUG_OPTION
作为第一个参数(用于节点),以避免 Connection拒绝 错误。Obvioulsy,我尝试过

  • 在运行/调试配置中将$ NODE_DEBUG_OPTION添加为 参数
  • 和作为 节点选项

导致像

node npm-cli.js run start-debug --scripts-prepend-node-path=auto $NODE_DEBUG_OPTION

node $NODE_DEBUG_OPTION npm-cli.js run start-debug --scripts-prepend-node-path=auto

在每种情况下,$ NODE_DEBUG_OPTION都不会解析,并且 节点 将其视为不存在的文件。

我也试图直接在 package.json中 添加变量,例如

    "start:" "npm-run-all $NODE_DEBUG_OPTION --parallel serve-static open-static"

这也会导致 找不到模块… / $ NODE_DEBUG_OPTION 错误。

那么,如何在IntelliJ IDEA中调试该选项呢?

谢谢


阅读 461

收藏
2020-07-07

共1个答案

一尘不染

添加$NODE_DEBUG_OPTIONpackage.json手动是通过调试脚本NPM启动应用程序的唯一途径,因为你必须确保做出Node.js的启动与相应的调试选项(--debug- brk--inspect-brk,等),以及IDE无法控制的方式子进程生成-
启动时只能将选项传递给主进程。但是必须将此选项传递给Node.js,而不是传递给 npm-cli.jsnpm-run-all 等。如果
npm-run-all 是一个npm脚本,它将启动您要使用node调试的应用程序.js,您需要相应地修改此脚本,例如:

"npm-run-all": "node $NODE_DEBUG_OPTION myapp.js"

如果您的任务运行一个Shell脚本,而该脚本又通过node.js运行您的应用程序,则您需要修改一个Shell脚本。目标是使用调试选项启动节点进程。

2020-07-07