如何调试Cordova的钩子?

3
我想知道在Cordova中是否有可能调试javascript hook?我的hook在prepare之前触发。我的命令是:
cordova prepare ios

我目前使用的是Visual Studio Code,它有一个名为"Cordova工具"的插件可以在运行时调试应用程序。但我的需求是在构建时进行调试。

有什么推荐吗?

PS:我的意思是真正的调试,也就是断点和变量显示等。

2个回答

9

2019年11月25日更新的答案

由于node-inspector已经被弃用,以下是我现在会这样做:

  • 在Chrome浏览器中打开chrome://inspect
  • 从我的Cordova应用项目根目录运行node --inspect --inspect-brk /path/to/node_modules/cordova/bin/cordova prepare ,其中包含我希望调试的挂钩脚本
  • 在Chrome标签中,点击检查以打开Chrome Dev Tools
  • 在文件系统选项卡下,选择添加文件夹到工作区并选择包含挂钩脚本的Cordova项目内部的目录
  • 向我的挂钩脚本添加断点
  • 按下Chrome Dev Tools中的播放按钮继续执行并命中我的断点

原始答案2017年6月7日

以下是我如何调试我的挂钩脚本:

  • 安装node inspector:npm install -g node-inspector
  • 从Cordova项目根目录,通过适当的选项运行 Cordova 命令来使用 node inspector 触发我的挂钩脚本,例如:

    node-debug /path/to/node_modules/cordova/bin/cordova prepare

  • 当node-inspector在Chrome标签中打开时,浏览Sources以找到您的挂钩脚本

  • 添加断点
  • 按下继续执行以到达您的断点
  • 然后,您可以交互式地调试您的挂钩脚本:

node inspector


它运行得很好。我可以逐步执行一个钩子。感谢Dave分享这个! - undefined
能否从Ionic 2项目中调试Cordova钩子? 当我尝试node-debug ionic cordova build android时,总是出现重复进程===>错误:listen EADDRINUSE :::5858。 有解决方案吗? - undefined
在我的情况下,我的脚本没有触发我的断点。我需要将我的钩子标签移到config.xml的根级别上。它不能在platform标签内部工作。之后,我需要在我的脚本中检查是否正在运行ios:if (ctx.opts.platforms.indexOf('ios') < 0)。我编写的脚本还是按照Node.js的风格编写的,即使用module.exports。重要的是使用hook标签而不是hooks文件夹中的hook。在hooks文件夹中,无法进行调试。希望这能帮助其他人避免我整天寻找错误的经历。 - undefined

0

您可以在不打开浏览器的情况下,通过将此调试配置放入项目根目录下的.vscode/launch.json文件中,在VS Code内轻松调试Cordova挂钩:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Cordova Prepare",
      "program": "C:/Program Files/nodejs/node_modules/cordova/bin/cordova", // This is for winx64 adjust it to your platform
      "args": ["prepare"]
    }
  ]
}

只需要在hook文件中设置一个断点,然后按F5或转到“调试和运行”侧边菜单,并在顶部“Cordova Prepare”文本旁边的播放按钮上点击。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接