nodejs安装_nodejs调试全局安装的cli脚本

3615cffc98917520abf3c2e3835a8724.png

最近在阅读cordova-cli的源码,想着要是能直接在vscode中打开调试,一步步地查看cordova命令的执行过程,那么将会大大的方便我对其源码的阅读。然而网上找了很多教程,大多都是直接调试本地脚本或者node_module/.bin中的命令脚本的方法,很少有调试全局的命令脚本的方法,因此在自己试了多次之后有了这篇文章,能够调试全局的命令脚本,在文章结尾部分也有介绍如何调试node_module/.bin中的脚本的方式,大同小异

方式一:通过npm run <script-name>的方式进行断点调试

此方式首先需要将需要进行调试的全局cli命令在package.json中配置好,例如本例中调试的是cordova的全局命令可以按照以下的方式设置: package.json

{
    ...
    "scripts": {
        "gloal-debug": "node --inspect-brk=5858 /usr/local/bin/cordova platform add android"
    },
    ...
}

因为我们已经指定了--inspect-brk=5858,所以在terminal中执行npm run gloal-debug并不会直接运行并结束脚本,而是有类似提示,并且命令脚本暂时暂停执行:

Debugger listening on ws://127.0.0.1:5858/38668db9-48e4-49c8-9c07-a91c64ba156b

注意到 ws://127.0.0.1:5858 中的端口号即我们script中的配置的端口号

这代表我们执行的命令脚本已经进入到了调试模式了,此时我们可以通过设置vscode来连接到该命令脚本对应的nodejs实例了。

  • 首先添加一个类型为Node.js:Attach的调试

c24603a248dc4db6efea1b408e2a581a.png

dff20572bac797dd2ddb939fe0650a50.png
  • 然后在打开的lauch.json文件中修改其中的配置项目,最重要的是将port改为scripts中配置的5858
{
    "type": "node",
    "request": "attach",
    "name": "连接cordova的调试",
    "port": 5858
}
  • 最后在vscode启动对应的配置

45ce37a393a76982a5488d20c6758ab9.png

若能看到3即代表我们已经成功连接到了cordova命令的nodejs实例的调试,到此为止我们可以愉快的开始我们的调试模式下源码阅读之旅了

方式二:request类型为lauch的方式

若是我们不想先去命令行工具中执行npm run gloal-debug然后再连接到对应的命令脚本的nodejs实例,我们可以直接这样配置lauch.json文件

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",                 //nodejs的调试类型固定为node,<必填>
            "request": "launch",            //固定为launch,<必填>——launch|attach二选一
            "name": "调试cordova-create", //将会显示到vscode的debug栏的下拉菜单的名称,<必填>
            "cwd": "${workspaceFolder}",    //命令的工作目录,[可选]
            "runtimeExecutable": "npm",     //将要执行的命令
            "runtimeArgs": [                //命令参数列表
                "run",
                "gloal-debug"               
            ],
            "stopOnEntry": true,            //在程序文件的入口处断点,[可选]——建议指定为true,免去了先找到对应文件再打开的苦恼
            "port": 5858                    //监听的调试端口号,与`script`中的设置保持一致
        }
    ]
}

此设置在调试启动时将会执行 npm run gloal-debug,即执行package.josnscripts中的名称为gloal-debug的命令,配置port5858,因此在执行时将会自动连接到nodejs实例的5858端口上了,此方式比上一个方案的优点在于启动并且直接连接到了对应调试

方式三:直接对全局的依赖对应的脚本进行断点

有了launch.json文件,我们可以直接编辑此文件来更好的配置我们的调试

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "cordova lauch",
            "program": "/usr/local/bin/cordova",
            "args": [
                "platform",
                "add",
                "ios"
            ],
            "stopOnEntry": true,
        }
}

如何调试node_module/.bin中的脚本

launch.json文件中对应的program直接改为${workspaceFolder}/node_module/.bin/<待调试的脚本的名称>即可:

launch.json

{
    "type": "node",
    "request": "launch",
    "name": "node_module-cordova",
    "program": "${workspaceFolder}/node_modules/.bin/cordova",
    "args": [
        "--help"
    ],
    "stopOnEntry": true
}

如何找到全局安装的nodejs的命令的位置

// 直接输出nodejs全局依赖的路径
npm ls -g --depth 0 | grep -E ^/

// 或者
// 查看nodejs全局安装的所有依赖
npm ls -g --depth 0

参考资料:

https:// nodejs.org/docs/latest- v10.x/api/cli.html#cli_inspect_brk_host_port

更多的nodejs调试相关可以参阅如下网址

https:// nodejs.org/en/docs/guid es/debugging-getting-started/

请注意,此乃 Shadow如寒灬原创文章、转载请附上此链接https://www.wanyan.site/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值