当前位置: 首页 > 知识库问答 >
问题:

如何在launch.json中的Visual Studio代码中反转${relativeFile}中的反斜杠?

吕英才
2023-03-14

我正在尝试配置(Windows)Visual Studio代码launch.json为当前文件启动jest测试。为了获得路径,我使用了${relativeFile}变量,该变量给出了一个带有反斜杠的字符串,如“src\services\some service.spec.ts”,尽管在文档中斜杠看起来很正常。

似乎jest不接受这种路径,因为使用了反向斜杠。当我用普通斜杠手动传递相同的路径时,效果很好。

问题是,是否有任何方法可以反转VSCode路径预定义变量(如${relativeFile})中的反斜杠,或者一些解决方法?

共有3个答案

东典
2023-03-14

这个问题与我在别处给出的答案非常相似。总结一下这里的解释:

  1. 而不是直接运行节点...,运行bash-c节点...,以便您可以在命令行中使用shell命令替换。
  2. 通过cygpath-m程序传递路径以获得向前斜杠,类似于$(cygpath-m${relativeFile})

有关更多详细信息和示例,请参见链接答案。

长孙星汉
2023-03-14

使用变量extension.commandvariable.file.relativeFilePo六从扩展命令变量,其中您需要${relativeFile}与前斜杠。在这个扩展中还有其他有用的替换。

孔安阳
2023-03-14

现在jest cli支持选项--runTestsByPath,这样您就可以显式地指定一个文件路径而不是一个模式,它允许您在windows上使用\

所以下面的launch.json应该工作:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Jest Current File",
      "type": "node",
      "request": "launch",
      "args": [
        "node_modules/jest/bin/jest.js",
        "--runInBand",
        "--runTestsByPath",
        "${relativeFile}"
      ],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "cwd": "${workspaceFolder}"
    }
  ]
}

jest似乎不打算使用\,vscode也不打算提供功能来替换预定义变量中的字符。

但有一些变通办法:

>

  • 使用${fileBasename}代替${relativeFile}

    或者使用输入变量,以便vscode在调试时提示您输入自定义测试名称。

    下面是上述两种解决方法的示例launch.json

    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "Jest Current FileBaseName",
          "type": "node",
          "request": "launch",
          "args": [
            "node_modules/jest/bin/jest.js",
            "--runInBand",
            "${fileBasename}"
          ],
          "console": "integratedTerminal",
          "internalConsoleOptions": "neverOpen",
          "cwd": "${workspaceRoot}"
        },
        {
          "name": "Jest Custom",
          "type": "node",
          "request": "launch",
          "args": [
            "node_modules/jest/bin/jest.js",
            "--runInBand",
            "${input:testName}"
          ],
          "console": "integratedTerminal",
          "internalConsoleOptions": "neverOpen",
          "cwd": "${workspaceRoot}"
        }
      ],
      "inputs": [
        {
          "type": "promptString",
          "id": "testName",
          "description": "The file or name you want to test",
          "default": "${fileBaseName}"
        }
      ]
    }
    

  •  类似资料:
    • 问题内容: 我正在尝试将输出输出为\ a \ b \ c。上面的错误可能是因为我无法转义\字符。 问题答案: 您无需转义反斜杠(仅使用内部单引号):

    • 我有一个JSON对象,其字符串字段可能包含与“\\\\u”匹配的转义unicode字符,例如: 我尝试使用Stringify进行转换,并在替换Node.js12中的额外字符后重新解析: 手动尝试替换所有unicode字符也不起作用: 是否有方法对转义的unicode字符进行解码,以便显示实际的unicode值?

    • 本文向大家介绍如何在Python中取消转义的反斜杠字符串?,包括了如何在Python中取消转义的反斜杠字符串?的使用技巧和注意事项,需要的朋友参考一下 有两种方法可以在Python中转义反斜杠转义的字符串。首先是使用literal_eval评估字符串。请注意,在此方法中,您需要将字符串用另一层引号引起来。例如: 另一种方法是使用字符串类中的decode('string_escape')方法。例如,

    • 在我的应用程序中,我正在通过SQL中的“load data local infile”filename命令将一个csv文件读入DB。如果一个反斜杠出现在一个字段中,相邻字段将被合并。如何在将文件读入DB时忽略反斜杠。 例如, “ABCD”,“EFGH\”,“IJK” 它将作为col1 col2 col3 abcd efghijk null转到表中 我想把它变成col1 col2 col3 abcd

    • 所以,我在Node.js中使用multer,它给出了上传图像的反斜杠路径,但这不起作用,因为我需要将其转换为URL。 这是我得到的输出: 但是,我想用正斜杠替换图像前的反斜杠。 我试过这个: 但是,它只是去掉了反斜杠: 附:我知道这个网站上有这样的问题,但他们没有帮助我。例如,multer:文件的路径是不对的对我没有帮助,所以请不要将此标记为重复问题。多谢了。

    • 我尝试了许多方法从已执行的(我不是指从输入)中获得单个反斜杠。 我可以将特殊字符作为tab、new line和许多其他字符,然后将它们转义为或或,但当非特殊字符在旁边时,我不能获得单个反斜杠。 我不想要这样的东西: 如果我尝试在0处获取字符,则得到而不是。