Mik*_*lis 2 go visual-studio-code webassembly
我有一个 Go 项目,它构建了一个 WebAssembly (WASM) 应用程序和一个后端服务器。两个部分的构建和运行都没有错误。然而,VSCode 在 WASM 应用程序中会产生恼人的 linter 错误。
\ncould not import syscall/js (no required module provides package "syscall/js")\nRun Code Online (Sandbox Code Playgroud)\n据我目前的理解,问题是 VSCode 不会从它应该调用的构建标签推断出来gopls,env GOOS=js GOARCH=wasm一种解决方案是将这些标签设置为工作区 Go 环境变量。
然而,应用程序设计依赖于为 wasm 和服务器代码提供一个通用的内部包,以便每一方都能看到一些简化它们之间接口的结构定义。为此,该存储库的组织方式(简化视图)如下:
\ncmd\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 internal\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 common\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 common.go\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 common_test.go\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 server\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.go\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 wasm\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.go\nRun Code Online (Sandbox Code Playgroud)\n如何配置 VSCodeenv GOOS=js GOARCH=wasm在对 wasm 目录进行 linting 时使用而不是对其他目录使用?
使用 VSCode 的多根工作区功能提供了一个我可以接受的解决方案。我最终扁平化了我的目录层次结构(消除了cmd/)以更好地适应 VSCode 的概念。新的布局(比我在问题中显示的更详细)如下。
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .gitignore\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .vscode\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 assets\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 index.html\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.mod\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 go.sum\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 internal\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 common\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 common.go\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 common_test.go\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 magefile.go\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 server\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 smain.go\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 wasm\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .vscode\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 settings.json\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 wmain.go\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 workspace.code-workspace\n\nRun Code Online (Sandbox Code Playgroud)\n我使用“将文件夹添加到工作区”在 VSCode 中创建了工作区,如上面链接的文档中所述。不太知道它是否有效,我添加了每个单独的文件夹,然后添加了父文件夹。保存工作区后,VSCode 创建了workspace.code-workspace文件,其内容如下所示。
{\n "folders": [\n {\n "path": "server"\n },\n {\n "path": "internal"\n },\n {\n "path": "wasm"\n },\n {\n "path": "assets"\n },\n {\n "path": "."\n }\n ],\n "settings": {}\n}%\nRun Code Online (Sandbox Code Playgroud)\n代码工作区文件夹就位后,可以在各个文件夹中添加 .vscode/settings.json 文件。这提供了向 Go 工具链指定必要的环境变量的能力,以防止syscall/js.
{\n "go.toolsEnvVars": {\n "GOOS": "js",\n "GOARCH": "wasm"\n }\n}%\nRun Code Online (Sandbox Code Playgroud)\n需要注意的一个小事项是层次结构顶层的空 .vscode 目录似乎是必要的。删除它又返回了错误。
\n该解决方案的唯一烦恼是:
\n| 归档时间: |
|
| 查看次数: |
1799 次 |
| 最近记录: |