如何调试 angular 项目中损坏的 ng lint

How to debug ng lint broken in angular project

在我的 angular 应用程序中,当我 运行 nglint 我得到这个异常

    Cannot read property 'check-regex' of undefined

[error] TypeError: Cannot read property 'check-regex' of undefined

    at Rule.getRuleOptions (node_modules\tslint\lib\rules\maxLineLengthRule.js:51:72)
    at Rule.isEnabled (node_modules\tslint\lib\rules\maxLineLengthRule.js:39:26)
    at Object.loadRules (node_modules\tslint\lib\ruleLoader.js:48:22)
    at Linter.getEnabledRules (node_modules\tslint\lib\linter.js:232:29)
    at Linter.lint (node_modules\tslint\lib\linter.js:107:33)
    at _lint (node_modules\@angular-devkit\build-angular\src\tslint\index.js:146:20)
    at async _run (node_modules\@angular-devkit\build-angular\src\tslint\index.js:60:29)

有人知道如何调试它吗?有没有一种方法可以像我们编写代码一样调试它 (c#, javascript).

在浏览器中调试

打开Chrome浏览器(没有的话先安装)

  • 安装 Node Inspector Manager 扩展程序

  • 转到 node_modules\tslint\lib\rules\maxLineLengthRule.js:51:72 并在 debugger;

    之前添加行
  • 在您的应用程序中打开控制台并输入

    node --inspect ./node_modules/@angular/cli/bin/ng lint
    

Chrome 将自动打开浏览器,您将能够像在浏览器中一样调试您的问题。

在 VS Code 中调试

  • 打开(或先创建)launch.json 文件

  • 添加如下配置:

    {
      "type": "node",
      "request": "launch",
      "name": "Debug lint",
      "program": "${workspaceFolder}\node_modules\@angular\cli\bin\ng",
      "cwd": "${workspaceFolder}",
      "args": ["lint"],
      "console": "integratedTerminal"
    }
    
  • 转到node_modules\tslint\lib\rules\maxLineLengthRule.js:51:72并在那里设置断点

  • 运行 调试 lint 配置

VS 代码应该命中该断点,您将能够对其进行调试。