首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何让VSCode对同一个repo中的不同目录使用不同的Go env变量?

如何让VSCode对同一个repo中的不同目录使用不同的Go env变量?
EN

Stack Overflow用户
提问于 2021-02-14 02:32:00
回答 1查看 229关注 0票数 1

我有一个Go项目,为它构建了一个WebAssembly应用程序和一个后端服务器。这两个部分的构建和运行都没有错误。然而,VSCode会在WASM应用程序中产生一个恼人的linter错误。

代码语言:javascript
运行
复制
could not import syscall/js (no required module provides package "syscall/js")

据我目前所知,问题是VSCode不能从构建标签中推断出它应该使用env GOOS=js GOARCH=wasm调用gopls,一个解决方案是将这些标签设置为workspace Go环境变量。

然而,应用程序的设计依赖于为wasm和服务器代码提供一个通用的内部包,以便每一方都能看到一些结构定义,从而简化了它们之间的接口。为此,存储库按如下方式组织(简化视图):

代码语言:javascript
运行
复制
cmd
├── internal
│   └── common
│       ├── common.go
│       └── common_test.go
├── server
│   └── main.go
└── wasm
    └── main.go

如何将VSCode配置为在连接wasm目录而不是其他目录时使用env GOOS=js GOARCH=wasm

EN

回答 1

Stack Overflow用户

发布于 2021-02-14 23:37:42

使用VSCode的Multi-Root Workspace功能提供了一个我可以接受的解决方案。我最终扁平化了我的目录层次结构(去掉了cmd/),以更好地适应VSCode的概念。新的布局(比我的问题中显示的更详细)如下所示。

代码语言:javascript
运行
复制
.
├── .gitignore
├── .vscode
├── README.md
├── assets
│   └── index.html
├── go.mod
├── go.sum
├── internal
│   └── common
│       ├── common.go
│       └── common_test.go
├── magefile.go
├── server
│   └── smain.go
├── wasm
│   ├── .vscode
│   │   └── settings.json
│   └── wmain.go
└── workspace.code-workspace

我使用上面链接的文档中描述的“添加文件夹到工作区”在VSCode中创建了工作区。由于不知道它是否可以工作,我添加了每个单独的文件夹,然后添加了父文件夹。保存工作区后,VSCode创建了workspace.code-workspace文件,其内容如下所示。

代码语言:javascript
运行
复制
{
    "folders": [
        {
            "path": "server"
        },
        {
            "path": "internal"
        },
        {
            "path": "wasm"
        },
        {
            "path": "assets"
        },
        {
            "path": "."
        }
    ],
    "settings": {}
}%

有了代码工作区文件夹,就可以在各个文件夹中添加.vscode/settings.json文件。这提供了为Go工具链指定必要的环境变量的能力,以防止syscall/js上的导入错误。

代码语言:javascript
运行
复制
{
    "go.toolsEnvVars": {
        "GOOS": "js",
        "GOARCH": "wasm"
    }
}%

需要注意的一个次要事项是,层次结构顶层的空.vscode目录似乎是必需的。删除它会重新返回错误。

这个解决方案唯一让人恼火的是:

  1. 从命令行打开时要求启用工作区文件的提示。
  2. 复制VSCode资源管理器侧边栏中的文件夹列表。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66188534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档