在VS Code中调试当前文件

86

我正在编写JavaScript并进行简单的练习/程序。有时,我希望运行我的文件进行测试。我知道我可以创建一个HTML文件并在控制台中执行此操作。在Sublime中,存在一种方法可以"构建"当前文件并立即查看结果(例如,发送到console.log的内容)。

对于VS Code,在每个我想要以这种方式"构建"/调试的文件中,似乎都必须手动更改launch.json文件以反映当前程序的名称。

我一直在研究绕过这个问题的方法,并且我了解到有像${file}这样的变量,但是当我在launch.json的"program"属性中使用它时,例如:

"program": "${workspaceRoot}/${file}"

不论是否带有workspaceRoot部分,我都会收到以下错误提示:
Attribute "program" does not exist" (file name here). 

我是否错过了一种简单的方法来完成这个任务,或者每次想运行文件时都必须编辑launch.json

提前感谢!


我认为这个有更新了。现在我们只需按下调试开始按钮,就可以直接调试JS文件。除非已经有配置了。它会自动开始调试当前文件。 - Leela Venkatesh K
4个回答

190

更改为:

"program": "${file}"

我在项目中使用不同的名称来调试不同的文件,并在完成后从launch.json文件中删除该条目。 - zubair1024
@jdb79 你应该通过点击左侧的绿色勾号来接受答案。 - MuhsinFatih
6
有时我也会添加 "cwd": "${fileDirname}",以便它能够在当前文件夹中启动(当使用相对于当前文件位置的路径加载文件时很有用,例如:fs.readFile('./somefile.txt'))。 - Razvan Pocaznoi
1
还有更多:https://code.visualstudio.com/docs/editor/variables-reference - Martin Capodici
我正在做这个,但是每当我按下F5键时,它会在一个新的只读编辑器选项卡中打开当前文件。 - undefined

73

供参考,以下是完整的 launch.json 文件。

{
  "launch": {
    "version": "0.2.0",
    "configurations": [
      {
        "name": "Node.js - Debug Current File",
        "type": "node",
        "request": "launch",
        "program": "${file}"
      }
    ]
  }
}

在我的项目的launch.json文件中有一个条目 "name": "Launch Program",如果使用 "Launch Program" 而不是 "Debug File",会有什么不同吗? - vikramvi
@vikramvi 没有区别,它只是用于参考(例如,它会在状态栏中显示当前活动任务的名称)。 - Bernardo Dal Corno
区别在于“类型”,我认为:您可以拥有类似的配置对象,但是在“名称”和“类型”键中存在差异。 “类型”是语言。 - Timo

8

访问文件有多种不同的方式,这些方式通过预定义变量提供:

假设您有以下需求:

  • 在编辑器中打开位于/home/your-username/your-project/folder/file.ext的文件;
  • 将目录/home/your-username/your-project作为您的根工作区打开。

那么您将为每个变量获得如下数值:

  • ${userHome} - /home/your-username
  • ${workspaceFolder} - /home/your-username/your-project
  • ${workspaceFolderBasename} - your-project
  • ${file} - /home/your-username/your-project/folder/file.ext
  • ${fileWorkspaceFolder} - /home/your-username/your-project
  • ${relativeFile} - folder/file.ext
  • ${relativeFileDirname} - folder
  • ${fileBasename} - file.ext
  • ${fileBasenameNoExtension} - file
  • ${fileDirname} - /home/your-username/your-project/folder
  • ${fileExtname} - .ext
  • ${lineNumber} - 光标所在行号
  • ${selectedText} - 代码编辑器中选定的文本
  • ${execPath} - Code.exe 的位置
  • ${pathSeparator} - 在 macOS 或 linux 上为 /,在 Windows 上为\

1

对于单个文件,您可以完全跳过 launch.json 文件。只需在调试器面板中单击绿色箭头,并选择 Node 作为您的环境。

来自这里


4
如果您还没有设置启动配置,那么点击绿色箭头将会给您提供环境选择,并创建一个包含项目的启动文件。否则,绿色箭头将会在下拉列表中运行所选项。 - Michael Currin
或者只需按F5 - Bernardo Dal Corno
回复 @MichaelCurrin -- 看起来带有 main 或 bin 条目的 package.json 也可能强制运行列在其中的文件,而不是 VS Code 中的活动文件。 - ruffin

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