在我的 Ubuntu 16.04 上,我使用 IntelliJ IDEA ultima 2017.2 以及 node v6.11.2 和 npm v3.10.10 和 想要调试一个 node.js 应用程序,它具有以下 package.json start 条目:
"start:" "npm-run-all --parallel serve-static open-static"
根据控制台输出和this similar SO question我需要添加 $NODE_DEBUG_OPTION 作为第一个参数(用于 Node )以避免 Connection refused 错误。 很明显,我试过了
- 在运行/调试配置中添加 $NODE_DEBUG_OPTION 作为参数
- 作为 Node 选项
这导致了这样的调用
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 都没有解析,node 将其视为不存在的文件。
我也试过直接在 package.json 中添加变量,比如
"start:" "npm-run-all $NODE_DEBUG_OPTION --parallel serve-static open-static"
这也会导致 Cannot find module .../$NODE_DEBUG_OPTION 错误。
那么,我怎样才能传递这个选项以便在 IntelliJ IDEA 中调试那个东西?
谢谢
最佳答案
手动添加 $NODE_DEBUG_OPTION
到 package.json
是调试通过 npm 脚本启动的应用程序的唯一方法,因为您必须确保 Node.js 已启动使用适当的调试选项(--debug-brk
、--inspect-brk
等),IDE 无法控制子进程的生成方式 - 它可以仅在启动时将选项传递给主进程。但是这个选项必须传递给 Node.js - 而不是 npm-cli.js、npm-run-all 等。如果 npm-run- all 是一个 npm 脚本,用于启动您要使用 node.js 调试的应用程序,您需要相应地修改此脚本,例如:
"npm-run-all": "node $NODE_DEBUG_OPTION myapp.js"
如果您的任务运行一个 shell 脚本,反过来,它会使用 node.js 运行您的应用程序,您需要修改一个 shell 脚本...目标是使用调试选项启动 Node 进程
关于json - IntelliJ IDEA 如何正确地将 $NODE_DEBUG_OPTION 传递给 npm-run-all,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45966125/