GOPATH ভিত্তিক ডিপ থেকে মোডে যাওয়ার সময় প্রথম পাথ উপাদানটিতে "xxxx / xxxx / uuid" অনুপস্থিত বিন্দুটি নষ্ট হয়ে যায়


12
$ সংস্করণে যান
1.13.3

আমার ফোল্ডারের কাঠামো নীচে রয়েছে:

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

my-auth-server ব্যবহারসমূহ my-api-server/my-utils/uuidঅনুতাপ হিসাবে

এখন, আমি যখন জিওপিএএটিএইচ ভিত্তিক মডিউল সিস্টেমটি ব্যবহার করেছি, এটি দুর্দান্ত কাজ করেছে। তবে গো মডিউলগুলি ব্যবহার করার সময়, আমি এটি চালানোর সময় ত্রুটি ফিরে 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 buildকরে ব্যবহার go runকরার পরিবর্তে ফলাফল নির্বাহযোগ্যকে ব্যবহার এবং চালানোর পরামর্শ দিচ্ছি ।

মডিউল ব্যবহারের জন্য কোনও প্রকল্পকে কীভাবে রূপান্তর করা যায় সে সম্পর্কে সিরিজের দ্বিতীয় পোস্ট সহ কীভাবে মডিউলগুলি ব্যবহার করতে হবে তার চলার জন্য https://blog.golang.org/used-go-modules দেখুন mod


1

আপনার মেইন.গো ফাইলটিতে আপনার আমদানির পাথগুলি পরীক্ষা করুন। এটিকে আমার শেষের দিকে চালিত করার জন্য আমাকে পুরো প্রকল্পের আমদানির পথে "প্রকল্পের নাম" / দর্শনগুলির পরিবর্তে "github.com [uusername" / ‍দেহপ্রকল্প-নাম + ভিউ / কল করতে হয়েছিল।


-1

মডেল খুঁজে পেতে পারেন না কারণ !!!

আপনার প্রকল্পকে গোপথের ভিতরে রাখবেন না ... এটি এত বিভ্রান্তিকর

পরিবর্তে...

.bashrc এ সেট করুন: GO111MODULE = চালু করুন

সমস্ত কমান্ড লাইন টার্মিনালগুলি বন্ধ করুন, তারপরে টার্মিনালগুলি পুনরায় খুলুন

প্রকল্পের রুট ফোল্ডারে যান

mod মডড init প্রকল্প_মডিউল_নাম যান

এটি 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?
আয়ুষ গুপ্ত

ভুল প্যাকেজ সংস্করণগুলিতে ভুল ফাইলের পথ => কারণ গোলং সঠিকভাবে চালাতে বা বিল্ড করতে সঠিক ফাইলটি খুঁজে পাচ্ছে না
রুশো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.