使用 VS 代码调试 Sanity exec

Debugging Sanity exec with VS Code

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

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

中的断点处停止

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

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

如果您愿意,可以克隆 OS repository。这可能会让你的事情变得更容易。如果您使用的是 VS 代码,那么您可以使用此启动配置 运行 附带调试器的 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"
    ]
}

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

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

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