client.go:19:2: no required module provides package github.com/gorilla/websocket : go.mod file not found in current directory or any parent directory; see 'go he lp modules'
Windows10のgolangのバージョンを上げる為に、古いバージョンをアンインストールして最新版(go version go1.17 windows/amd64)をインストールしました。
ところが、
// client.go
// Copyright 2015 The Gorilla WebSocket Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build ignore
package main
import (
"flag"
"log"
"net/url"
"os"
"os/signal"
"time"
"github.com/gorilla/websocket" ← ココ
)
var addr = flag.String("addr", "localhost:8080", "http service address")
で、こんなエラーが出てきます。
$ go run client.go
client.go:19:2: no required module provides package github.com/gorilla/websocket
: go.mod file not found in current directory or any parent directory; see 'go he
lp modules'
で、まあ、これは、いつものアレだな、と思い、
$go get github.com/gorilla/websocket
を対応したのですが、どういう訳か、このエラーが取れません。
ebata@DESKTOP-P6KREM0 MINGW64 ~/dummy/go_echo
$ go mod init go_echo ← "go_echo"という名前にしたのは、ディレクトリ名に合わせただけ
go: creating new go.mod: module go_echo
go: to add module requirements and sums:
go mod tidy
で、
ebata@DESKTOP-P6KREM0 MINGW64 ~/dummy/go_echo
$ go get github.com/gorilla/websocket
go get: added github.com/gorilla/websocket v1.4.2
として、中を調べてみたら、こんな感じになっていました。
ebata@DESKTOP-P6KREM0 MINGW64 ~/dummy/go_echo
$ more go.mod
module go_echogo 1.17
require github.com/gorilla/websocket v1.4.2 // indirect
で、まあ、以下のように動作を確認できました。
ebata@DESKTOP-P6KREM0 MINGW64 ~/dummy/go_echo
$ go run client.go
connecting to ws://localhost:8080/echo
よく分かりませんが、どうやら動かし方が変ったようです ―― 面倒くさいですけどね
さて、加えて、Visual Studio Code で、Golangのプログラムのデバッグですが、こっちも上手く動かなくなっていて、困っています。
で、今あきらかなことは、(1)上記のgo.modを作ることと、(2)1つのディレクトリに中には1goファイルを1つだけ入れること、そして、(3)setting.jsonを作ることです。
ebata@DESKTOP-P6KREM0 MINGW64 ~/dummy/go_test
$ more setting.json
{
"go.gopath" : "C/go"
}
私の場合、C:\goにインストールしているので、上記のように記載しています。