विकृत मॉड्यूल पथ "xxxx / xxxx / uuid" पहले पथ तत्व में गुम डॉट जब GOPATH से माइग्रेट करके जा रहा है mod पर जाना


12
$ गो संस्करण
1.13.3

मेरे पास एक फ़ोल्डर संरचना इस प्रकार है:

GOPATH
+---src
     +--- my-api-server
           +--- my-auth-server
                 +--- main.go
           +--- my-utils
                 +--- uuid
                       +--- uuid.go

my-auth-servermy-api-server/my-utils/uuidएक चित्रण के रूप में उपयोग करता है

अब, जब मैंने GOPATH आधारित मॉड्यूल प्रणाली का उपयोग किया, तो यह ठीक काम किया। लेकिन गो मॉड्यूल का उपयोग करते समय, जब मैं इसमें चला go run main.goजाता हूं my-auth-serverतो त्रुटि हुई:

build command-line-arguments: cannot load my-api-server/my-utils/uuid: malformed module path "my-api-server/my-utils/uuid": missing dot in first path element

कुछ पता है इसे कैसे हल करना है?


इस उत्तर को देखें: stackoverflow.com/a/55347424/1218512
colminator

जवाबों:


10

go.modफ़ाइल (इस मामले में, अपनी परियोजना की जड़ में होना चाहिए my-api-server/go.mod)।

मॉड्यूल पथ का पहला भाग एक डोमेन / पथ होना चाहिए। उदाहरण के लिए, पूर्ण पथ हो सकता है github.com/your-github-username/my-api-server। जो त्रुटि आप देख रहे हैं, क्योंकि पहला भाग एक डोमेन (एक अवधि के साथ) नहीं है। इसे विकसित करने के लिए आपको मॉड्यूल प्रकाशित करने की आवश्यकता नहीं है, लेकिन आपको एक उचित डोमेन नाम का उपयोग करने की आवश्यकता है।

एक बार जब आपके पास एक मॉड्यूल पथ होता है, तो आप पूर्ण मॉड्यूल पथ + "/" + पैकेज के सापेक्ष पथ का उपयोग करके उस मॉड्यूल में निहित पैकेज आयात कर सकते हैं। उदाहरण के लिए,

import "github.com/your-github-username/my-api-server/my-utils/uuid"

कब से main.goऔरuuid एक ही मॉड्यूल में सम्‍मिलित हैं, इसलिए आपको पैकेज का उपयोग करने के लिए फ़ाइल requireमें विवरण की आवश्यकता नहीं है । आप इसे किसी भी अन्य पैकेज की तरह आयात कर सकते हैं और यह काम करेगा।go.moduuid

मैं उपयोग करने की सलाह देता हूं go buildgo run यह सुनिश्चित करने के लिए परिणामी निष्पादन योग्य और चलाने की कि आप यह सुनिश्चित करें कि आप उन सभी फाइलों को शामिल करें जिनकी आपको निर्माण प्रक्रिया में आवश्यकता है।

देखें https://blog.golang.org/using-go-modules कैसे जाओ मॉड्यूल का उपयोग करने के तरीके का एक पूर्वाभ्यास के लिए दूसरे पोस्ट कैसे एक परियोजना मॉड्यूल का उपयोग करने के बारे में कन्वर्ट करने के लिए है कि श्रृंखला में।


1

अपने main.go फ़ाइल पर अपने आयात पथ की जाँच करें। मुझे संपूर्ण प्रोजेक्ट पाथ "github.com/ Isusernameकांग्स / ईप्रोजेक्ट- नामिंग / साक्षात्कार के बजाय [प्रोजेक्ट-नेम] / विचारों को अपने अंत में काम करने के लिए बुलाना पड़ा।


-1

मॉड्यूल पर जाएँ नहीं मिल सकता है !!!

GOPATH के अंदर अपना प्रोजेक्ट न रखें ... यह इतना भ्रामक है

बजाय...

inbashrc में सेट करें: GO111MODULE = पर निर्यात करें

सभी कमांड लाइन टर्मिनलों को बंद करें, फिर टर्मिनलों को फिर से खोलें

प्रोजेक्ट रूट फ़ोल्डर में जाएं

$ go mod init project_module_name

यह go.mod फ़ाइल जनरेट करेगा

अपने पैकेज को अपने इच्छित संस्करण के साथ स्थापित करें: go get -v github.com/golang/protobuf@v1.3.4

तब $ चला go run main.go

अब go.mod फ़ाइल को उन पैकेज संस्करणों को रिकॉर्ड करना चाहिए जिन्हें गोलंग चलाने और बनाने के लिए उपयोग करेगा ...

सुनिश्चित करें कि आपके go.mod फ़ाइल की जाँच करके सही पैकेज संस्करणों का उपयोग कर रहे हैं! यह दिखना चाहिए: github.com/golang/protobuf v1.3.4


Do not put your project inside GOPATH... that is so confusing- यह एक सम्मेलन है, जिसे मैं विशेष रूप से पसंद करता हूं।
आयुष गुप्ता

इसके अलावा, त्रुटि missing dot in first path elementनहीं हैcannot resolve module
आयुष गुप्ता

आयुष गुप्ता, त्रुटि गलत मॉड्यूल उपयोग के कारण होती है
रूसो

परिभाषित करें incorrect?
आयुष गुप्ता

गलत पैकेज संस्करणों में गलत फ़ाइल पथ है => गोलंग चलाने या बनाने के लिए सही फ़ाइल खोजने में सक्षम नहीं है
रूसो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.