VS Code中ESP-IDF项目重开容器报错:workspaceFolder需为绝对路径
解决VS Code Dev Container提示“Workspace folder must be an absolute path”的问题
问题背景
通过VS Code的ESP-IDF扩展从示例模板创建项目后,项目包含.devcontainer文件夹(含devcontainer.json和Dockerfile)。执行View->Command Palette->Reopen in Container时,收到错误:
Visual Studio Code Workspace folder in devcontainer.json must be an absolute path. [Open devcontainer.json] [Cancel]
当前devcontainer.json完整内容:
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: // https://github.com/microsoft/vscode-dev-containers/tree/v0.183.0/containers/ubuntu { "name": "ESP-IDF QEMU", "build": { "dockerfile": "Dockerfile" }, // Add the IDs of extensions you want installed when the container is created "workspaceMount": "source=${localWorkspaceFolder},target=${localWorkspaceFolder},type=bind", /* the path of workspace folder to be opened after container is running */ "workspaceFolder": "${localWorkspaceFolder}", "mounts": [ "source=extensionCache,target=/root/.vscode-server/extensions,type=volume" ], "customizations": { "vscode": { "settings": { "terminal.integrated.defaultProfile.linux": "bash", "idf.espIdfPath": "/opt/esp/idf", "idf.customExtraPaths": "", "idf.pythonBinPath": "/opt/esp/python_env/idf5.3_py3.10_env/bin/python", "idf.toolsPath": "/opt/esp", "idf.gitPath": "/usr/bin/git" }, "extensions": [ "espressif.esp-idf-extension" ], }, "codespaces": { "settings": { "terminal.integrated.defaultProfile.linux": "bash", "idf.espIdfPath": "/opt/esp/idf", "idf.customExtraPaths": "", "idf.pythonBinPath": "/opt/esp/python_env/idf5.3_py3.10_env/bin/python", "idf.toolsPath": "/opt/esp", "idf.gitPath": "/usr/bin/git" }, "extensions": [ "espressif.esp-idf-extension" ], } }, "runArgs": ["--privileged"] }
问题原因
workspaceFolder要求指定容器内部的绝对路径,但当前配置里用了${localWorkspaceFolder}——这个变量代表本地机器上的项目路径,VS Code无法将其解析为容器内的合法绝对路径,因此触发报错。同时workspaceMount的target字段也使用了相同变量,不符合容器内路径要求。
解决方案
修改workspaceMount和workspaceFolder,指定容器内的固定绝对路径(推荐使用/workspace,这是Dev Container的标准默认路径):
- 将
workspaceMount的target从${localWorkspaceFolder}改为/workspace - 将
workspaceFolder的值改为/workspace
修改后的完整devcontainer.json如下:
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: // https://github.com/microsoft/vscode-dev-containers/tree/v0.183.0/containers/ubuntu { "name": "ESP-IDF QEMU", "build": { "dockerfile": "Dockerfile" }, // Add the IDs of extensions you want installed when the container is created "workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind", /* the path of workspace folder to be opened after container is running */ "workspaceFolder": "/workspace", "mounts": [ "source=extensionCache,target=/root/.vscode-server/extensions,type=volume" ], "customizations": { "vscode": { "settings": { "terminal.integrated.defaultProfile.linux": "bash", "idf.espIdfPath": "/opt/esp/idf", "idf.customExtraPaths": "", "idf.pythonBinPath": "/opt/esp/python_env/idf5.3_py3.10_env/bin/python", "idf.toolsPath": "/opt/esp", "idf.gitPath": "/usr/bin/git" }, "extensions": [ "espressif.esp-idf-extension" ] }, "codespaces": { "settings": { "terminal.integrated.defaultProfile.linux": "bash", "idf.espIdfPath": "/opt/esp/idf", "idf.customExtraPaths": "", "idf.pythonBinPath": "/opt/esp/python_env/idf5.3_py3.10_env/bin/python", "idf.toolsPath": "/opt/esp", "idf.gitPath": "/usr/bin/git" }, "extensions": [ "espressif.esp-idf-extension" ] } }, "runArgs": ["--privileged"] }
修改完成后,重新执行Reopen in Container操作即可正常创建并进入容器环境。
内容的提问来源于stack exchange,提问作者vico
相关产品推荐
相关产品推荐

