【问题标题】:Debugging Sanity exec with VS Code使用 VS Code 调试 Sanity exec
【发布时间】:2020-08-22 10:56:25
【问题描述】:

我正在使用 Sanity (sanity.io headless CMS) 并使用 CLI 进行一些数据迁移。

我如何(或者,是否有可能)了解如何附加 vscode 调试器并在迁移脚本中的断点处停止。我正在运行以下 cli 迁移脚本:sanity exec migrate.js --with-user-token。我想在 migrate.js 中的断点处停止?

我已经管理调试控制台应用程序使用 node 运行,但不知道在使用 sanity exec .. 启动脚本时是否可以让调试器参与。单步调试代码是发现错误和学习的好方法。

【问题讨论】:

    标签: javascript debugging visual-studio-code sanity


    【解决方案1】:

    有多种不同的方法可以调试 Sanity CLI。不过,我之前没有尝试过你的方法。

    如果您愿意,可以克隆OS repository。这可能会让你的事情变得更容易。如果您使用的是 VS Code,那么您可以使用此启动配置来运行带有调试器的 CLI:

    {
        "type": "node",
        "request": "launch",
        "name": "Launch CLI",
        "program": "${workspaceFolder}/packages/@sanity/cli/bin/entry.js",
        "args": [
            "exec",
            "migrate.js",
            "--with-user-token"
        ]
    }
    

    您必须先运行npm run build 才能生成entry.js 文件。

    编辑:如果要运行需要 Studio 上下文的命令,可以运行 symlinkDependencies.js 脚本。这方面的一个例子可以是:

    node symlinkDependencies.js "/<path>/<to>/<your>/<studio>/<folder>" --all
    

    这将在您的 Studio 实例和 Sanity monorepo 之间创建符号链接。您还必须在 monorepo 中运行 npm run watch。这样您就可以在 monorepo 中编辑代码,并且您运行的命令将包含您的更改。


    您可以尝试的另一件事是添加环境变量DEBUG=*。这将在运行 CLI 命令时输出调试信息。如果您使用的是 Mac,则只需运行 DEBUG=* sanity exec migrate.js --with-user-token。如果您使用的是 Windows,请打开 PowerShell 并运行:$env:DEBUG=*。这仅为此 PowerShell 会话设置环境变量。然后你就可以运行你的命令了。

    对于您的确切问题,我想您可以尝试使用此配置:

    {
        "type": "node",
        "request": "launch",
        "name": "Launch CLI",
        "program": "/usr/local/lib/node_modules/@sanity/cli/bin/entry.js",
        "args": [
            "exec",
            "migrate.js",
            "--with-user-token"
        ]
    }
    

    或类似的东西。我自己没有尝试过这种方法。

    【讨论】:

    • 好的,我尝试克隆存储库并且能够npm run build它。但是在运行调试器时,我得到“@sanity/core not installed in current project - run sanity install”。尝试在多个级别上安装和“初始化”。如何同时获得 Sanity 项目上下文和克隆的 repo?
    • 啊,是的。我没有针对该场景的调试设置。您必须在名为 symlinkDependencies 的存储库中运行脚本。我会把它添加到我的答案中。
    • 靠近,我能感觉到,'-) 我能够运行 buildsymlinkDependencieswatch在下载的存储库中。但是调试那个仍然抱怨它超出了理智的上下文。使用稍微修改的启动C:\Program Files\nodejs\node.exe --inspect-brk=27919 node_modules\@sanity\cli\bin\entry.js exec migrate.js --with-user-token 调试我的 Sanity 实例可以正常连接并且不返回错误,但不会遇到任何断点,然后再次断开连接。你能看出我的错误吗?
    • 我真的不知道使用符号链接时发生了什么。我在调试时遇到了同样的问题,但应该可以让它工作。不知道如何从这里继续。
    【解决方案2】:

    我最终未能成功调试 sanity exec 命令,但在重新编写脚本后,我通过正常的节点调试完成了大部分相同的工作。

    • import-ed client from '@sanity/client'
    • 为我希望写入或读取草稿的项目制作访问令牌。
    • 添加了适当的启动配置和,
    • 从 vscode 运行 node v14.2.0 普通调试器,并通过断点逐步执行我的脚本。

    【讨论】:

      猜你喜欢
      • 2019-05-30
      • 2018-08-20
      • 2020-12-16
      • 2020-08-25
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多