go x/tools/cmd/present:支持在模块模式下播放代码片段

njthzxwz  于 6个月前  发布在  Go
关注(0)|答案(6)|浏览(44)

你正在使用的Go版本是什么( go version )?

$ go version
go version devel +9325bec899 Wed Nov 13 11:59:24 2019 +0100 darwin/amd64

这个问题在最新版本中是否重现?

你正在使用什么操作系统和处理器架构( go env )?

go env 输出

$ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/elias/Library/Caches/go-build"
GOENV="/Users/elias/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/elias/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/Users/elias/go-tip"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/Users/elias/go-tip/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/elias/proj/gophercon-2019-talk/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/_7/lnt35k555hl2bs7fjygkhgx00000gp/T/go-build183530635=/tmp/go-build -gno-record-gcc-switches -fno-common"
GOROOT/bin/go version: go version devel +9325bec899 Wed Nov 13 11:59:24 2019 +0100 darwin/amd64
GOROOT/bin/go tool compile -V: compile version devel +9325bec899 Wed Nov 13 11:59:24 2019 +0100
uname -v: Darwin Kernel Version 18.7.0: Sat Oct 12 00:02:19 PDT 2019; root:xnu-4903.278.12~1/RELEASE_X86_64
ProductName:	Mac OS X
ProductVersion:	10.14.6
BuildVersion:	18G1012
lldb --version: lldb-1100.0.28.19
Apple Swift version 5.1 (swiftlang-1100.0.270.13 clang-1100.0.33.7)

你做了什么?

$ git clone https://github.com/eliasnaur/gophercon-2019-talk
$ cd gophercon-2019-talk
$ GO111MODULE=on present

然后,我在浏览器中打开了http://127.0.0.1:3999/gophercon-2019.slide#7,并按下了"运行"。

你期望看到什么?

程序在本地运行。

你看到了什么?

compile1.go:7:5: cannot find module providing package gioui.org/app: working directory is not part of a module

Program exited: exit status 1

present 曾经可以与 GO111MODULE=on 一起工作。我相信 #32027 的修复破坏了它。

vktxenjb

vktxenjb1#

github.com/eliasnaur/gophercon-2019-talk 是一个模块,我从那里运行 present

gorkyyrv

gorkyyrv2#

哦,我错过了那个细节。

093gszye

093gszye3#

为了澄清,由于您在没有任何标志的情况下运行GO111MODULE=on present,这个问题是关于本地播放执行模式(而不是使用play.golang.org),没有使用Native Client(我们需要删除或处理它,否则很快就会出问题,为此我们创建了#35675)。为了使其更明确:

GO111MODULE=on present -use_playground=false -nacl=false

从简要查看来看,我怀疑问题是代码片段是在临时目录中构建的:
https://github.com/golang/tools/blob/5a76f03bc7c327212912ed6b2a76a10d7f39b224/playground/socket/socket.go#L358
这意味着它没有使用与present可能在同一模块中运行的相同模块。我们应该弄清楚我们想要的行为是什么。

c86crjj0

c86crjj04#

没有进展吗?我正在尝试制作一个幻灯片展示新的 golang.org/x/exp/maps 包,这个问题似乎阻碍了我...

5ssjco0h

5ssjco0h5#

@jub0bs 我认为没有人维护当前的软件包;例如,可以查看#27026。如果有任何进展,你将能够看到它。但更现实地说,我认为在不久的将来不会有任何进展,除非有人采取行动。

iqjalb3h

iqjalb3h6#

我假设你已经考虑过在模块内运行present,即使它是一个临时的模块?

相关问题