আমদানি চক্র অনুমোদিত নয়


135

আমার সমস্যা আছে

আমদানি চক্র অনুমোদিত নয়

এটি উপস্থিত হয়, যখন আমি আমার নিয়ামকটি পরীক্ষা করার চেষ্টা করি। আউটপুট হিসাবে আমি পেয়েছি

can't load package: import cycle not allowed
package project/controllers/account
    imports project/controllers/base
    imports project/components/mux
    imports project/controllers/account
import cycle not allowed
package project/controllers/account
    imports project/controllers/base
    imports project/components/mux
    imports project/controllers/account
import cycle not allowed
package project/controllers/account
    imports project/controllers/base
    imports project/components/mux
    imports project/controllers/routes
    imports project/controllers/base

কেউ আমাকে বলতে পারেন, কীভাবে এই ত্রুটিটি পড়বেন বা বুঝতে পারবেন? নির্ভরতা কোথায় ভুল?


13
accountপ্যাকেজ আমদানির baseপ্যাকেজ, যা আমদানি muxপ্যাকেজ, যা আমদানি accountপ্যাকেজ। এটি আমদানি নির্ভরতার একটি চক্রাকার সেট, যা অনুমোদিত নয়। দেখে মনে হচ্ছে আপনার পাশাপাশি আরও একটি চক্র রয়েছে, baseআমদানি হয় mux, কোনটি আমদানি করে routes, কোনটি আমদানি করে base
অমিত কুমার গুপ্ত

উত্তর:


170

আপনার প্রথম আমদানি চক্র সমস্যার চিত্রণ এখানে।

                  project/controllers/account
                     ^                    \    
                    /                      \
                   /                        \ 
                  /                         \/
         project/components/mux <--- project/controllers/base

তুমি কি আমার খারাপ হওয়া ASCII চার্ট সঙ্গে দেখতে পাচ্ছি যে আপনি একটি আমদানি চক্র তৈরি করছেন যখন project/components/muxআমদানির project/controllers/account। যেহেতু গো বৃত্তাকার নির্ভরতা সমর্থন করে না আপনি import cycle not allowedসংকলনের সময় ত্রুটি পাবেন ।


10
খুব খারাপ এটি কেবল সংকলনের উপর দেখায়। আমার গর্ত প্রকল্পটির পুনর্গঠনের জন্য অনেক সময় নষ্ট করা হয়েছে কেবলমাত্র আমি যা করেছি তা করতে আমাকে অনুমতি দেওয়া হচ্ছে না তা দেখতে ... dafug ...
C4d

35
আমি যেতে পছন্দ করি না এটির একটি কারণ। এবং এটি ডজন কারণগুলির মধ্যে মাত্র একটি।
tom10271

13
বিজ্ঞপ্তি ডিপগুলি মঞ্জুরি দেওয়ার কারণে কমপাইলের সময়গুলি উল্লেখযোগ্যভাবে বৃদ্ধি পাবে কারণ আপনার সমস্ত ডিপগুলির চেনাশোনাগুলি প্রতিবারই কোনও একটি ডিপ পরিবর্তিত হলে পুনরায় সংযুক্ত করা দরকার। বিজ্ঞপ্তি ডিপগুলি রাখাও একটি ভারী জ্ঞানীয় বোঝা কারণ এটি আপনার প্রোগ্রামটি সম্পর্কে বিতর্ক করা আরও কঠিন করে তোলে এবং জটিলতার দিকে ঝোঁক।
জামালুনি

আপনি কোন লিটার ব্যবহার করছেন আমি বনাম কোডের কোনও প্রচ্ছদ দেখতে পাচ্ছি না
গোফেরিন

অ্যাপটি চালানোর সময় আমি এই ত্রুটিটি দেখতে পাচ্ছিwatcher
আর সান

98

আমি সবেমাত্র এটির মুখোমুখি হয়েছি। আপনি প্যাকেজটির নামটি ব্যবহার করে একই প্যাকেজটির মধ্যে থেকে কোনও পদ্ধতি / টাইপ অ্যাক্সেস করতে পারেন।

আমার অর্থ কী তা বোঝানোর জন্য এখানে একটি উদাহরণ দেওয়া হল:

Foo.go এ:

// foo.go
package foo

func Foo() {...}

Foo_test.go এ:

// foo_test.go
package foo

// try to access Foo()
foo.Foo() // WRONG <== This was the issue. You are already in package foo, there is no need to use foo.Foo() to access Foo()
Foo() // CORRECT

6
আমার মতে এটি আরও ভাল উত্তর। গৃহীত উত্তর ঠিক যেমন বৈধ তবে এ জাতীয় ব্যর্থতার জন্য তত্ত্ব ব্যতীত অন্য কিছু ব্যাখ্যা করে না। @ জোনাথন লিনের উত্তর যাইহোক, এই ক্রিপ্টিক ত্রুটি বার্তার সঠিকভাবে ব্যাখ্যা করেছে, এবং কীভাবে এটি মোকাবেলা করা যায়।
কল্পনাপ্রসূতভাবে

3

আপনি আমদানি করতে পারেন,

project/controllers/base

ভিতরে

project/controllers/routes

আপনি ইতিমধ্যে ইতিমধ্যে আমদানি করেছেন। এটি সমর্থিত নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.