নোডজেস: প্রকারের ত্রুটি: প্রয়োজন (…) কোনও ফাংশন নয়


89

আমি একটি ফাইলের প্রয়োজন এবং পরে এটি একটি ভারে পাস করার চেষ্টা করছি। একটি প্রমাণীকরণ সিস্টেম তৈরি করতে আমি এই টিউটোরিয়ালটি অনুসরণ করছি । সার্ভার.জেএস ফাইলটি লেখার পরে এবং সংকলনের চেষ্টা করার পরে আমি একটি বিএসএন ত্রুটি পেয়েছি তাই আমি লাইনটি পরিবর্তিত করেছিলাম যার জন্য এটি মুগুজে মুক্তির সংস্করণ প্রয়োজন।

এখানে আমার কোড এবং ত্রুটি রয়েছে:

server.js

    require('./app/routes')(app, passport);

ত্রুটি

require('./app/routes')(app, passport);
                   ^

TypeError: require(...) is not a function
           at Object.<anonymous> (d:\Node JS learning\WorkWarV2\server.js:38:24)
           at Module._compile (module.js:434:26)
           at Object.Module._extensions..js (module.js:452:10)
           at Module.load (module.js:355:32)
           at Function.Module._load (module.js:310:12)
           at Function.Module.runMain (module.js:475:10)
           at startup (node.js:117:18)
           at node.js:951:3

Process finished with exit code 1

আমি পড়েছি যে এর সাধারণত এর অর্থ হ'ল প্রয়োজনীয় জেএস সঠিকভাবে লোড হচ্ছে না তবে কেন বা কীভাবে এটি ঠিক করতে হবে তা আমি জানি না।

মন্তব্যের কারণে সম্পাদনা করুন:

যেমন জিজ্ঞাসা করা হয়েছে , এখানে ফলাফলconsole.log(require);


console.log(require)ব্যর্থ লাইন আগে আপনি করতে পারেন ? আপনার সার্ভারের পাশের জেএসএসের প্রয়োজন হবে না, নোড.জেএস-এ একটি মডিউল সিস্টেম অন্তর্নির্মিত রয়েছে (কমনজেএস, এছাড়াও requireফাংশন ব্যবহার করে)। কিছু বিশ্বব্যাপী requireপরিবর্তনশীল বলে মনে হচ্ছে ।
kraf

উত্তর:


107

আমি মনে করি এর অর্থ হ'ল module.exportsআপনার ./app/routesমডিউলে কোনও ফাংশন হিসাবে নিযুক্ত করা হয়নি তাই require('./app/routes')কোনও ফাংশনের সংকল্প হয় না তাই আপনি এটিকে কোনও ফাংশন হিসাবে কল করতে পারবেন না require('./app/routes')(app, passport)

./app/routesআপনি যদি আমাদের আরও মন্তব্য করতে চান তবে আমাদের দেখান ।

এটি দেখতে কিছু দেখতে হবে;

module.exports = function(app, passport) {
    // code here
}

আপনি এমন একটি ফাংশন রফতানি করছেন যা এর পরে বলা যেতে পারে require('./app/routes')(app, passport)


অনুরূপ ত্রুটি দেখা দিতে পারে এমন অন্য একটি কারণ হ'ল যদি আপনার একটি বৃত্তাকার মডিউল নির্ভরতা থাকে যেখানে মডিউল A চেষ্টা করছে require(B)এবং মডিউল বি চেষ্টা করছে require(A)। যখন এটি হয়, এটি require()সাব-সিস্টেম দ্বারা সনাক্ত করা হবে এবং তাদের মধ্যে একটি আবার ফিরে আসবে nullএবং এইভাবে এটি কল করার চেষ্টা করে যে কোনও ফাংশন কাজ করবে না। সেক্ষেত্রে সংশোধন হ'ল সার্কুলার নির্ভরতা অপসারণ করা, সাধারণত একটি তৃতীয় মডিউলে সাধারণ কোড ভেঙে উভয় পৃথকভাবে লোড করতে পারে যদিও একটি বিজ্ঞপ্তি নির্ভরতা স্থির করার বৈশিষ্ট্য প্রতিটি পরিস্থিতির জন্য স্বতন্ত্র।


বা:module.exports.functionName = function functionName(app, passport) { ... }
ম্যাগনে

@ ম্যাগনে - তবে ওপি চেষ্টা করছে require('./app/routes')(app, passport);যা আপনার রফতানির যেভাবে দেখায় তেমন কার্যকর হবে না।
jفر00

সত্য, আমার খারাপ। আমার ব্যবহারের ক্ষেত্রে কিছুটা আলাদা ছিল। আমি একটি নামকৃত ফাংশন রফতানি করতে চেয়েছিলাম।
ম্যাগনে

67

আমার জন্য, আমি যখন তাত্ক্ষণিকভাবে অনুরোধ করা ফাংশন করি তখন আমার ;শেষের দিকে রাখা উচিত require()

ত্রুটি:

const fs = require('fs')

(() => {
  console.log('wow')
})()

ভাল:

const fs = require('fs');

(() => {
  console.log('wow')
})()

7
এটি আমার সমস্যাও ছিল! সমস্যাটি হ'ল রানটাইম এই ক্ষেত্রে শ্বেত স্থানটিকে উপেক্ষা করে এবং তাই দেখে মনে হচ্ছে আপনি () => {}যা কিছু ফিরিয়ে দিয়েছেন তার যুক্তি হিসাবে আপনি আপনার ফাংশন বডিটি পার করছেন require( ... )। ভয়ানক!
উইল ব্রিকনার

হ্যাঁ, 'জেএস-এ সেমিকোলনস' বিতর্কে সেমিকোলনের পক্ষে এটি একটি ভাল যুক্তি। ভাগ্যক্রমে, সেমিকোলনের অনুপস্থিতি কেবল আইআইএফইগুলির প্রসঙ্গেই সমস্যা বলে মনে হচ্ছে, যা ফ্যাশন থেকে পড়ে যাচ্ছে
জেপি

4
হে ভগবান!! আমি এখান থেকে এসেছি puppeteerএবং এখানে একটি সমস্যা না পাওয়া পর্যন্ত প্রায় একটি সমস্যার জন্য অনুরোধ করেছি। ভাই ... কখনও ভাবিনি যে ;আমাকে এত কষ্ট করবে।
ইরফ্যান্ডি জিপ

4
দুর্দান্ত সমাধান! মনে রাখবেন যে প্রতিটি স্ব-আমন্ত্রণমূলক ক্রিয়াকলাপের আগে আপনার অবশ্যই অর্ধিকোলনটি রাখা উচিত। আমি এই ;(() => {})()
দিমিত্রি

কোডটি একটি লাইব্রেরির মধ্যে থাকলে বিকল্পগুলি কী কী? আমার একটি নোড_মডিউলস লাইব্রেরি আছে (নোড-মেলজেট) যা সেমিকোলনগুলি মোটেই ব্যবহার করে না। আমি স্থানীয়ভাবে ওয়েবপ্যাক দিয়ে তৈরি করতে পারি তবে আমি যখন ডকারের উপর নির্মাণ করি তখন এটি এই ত্রুটিটি পেয়ে যায় :(
জাভিয়ার গুজম্যান

14

আমার জন্য, এটি চক্রীয় নির্ভরতা সহ একটি সমস্যা ছিল।

IOW, মডিউল একটি প্রয়োজনীয় মডিউল বি, এবং মডিউল বি প্রয়োজনীয় মডিউল এ A.

সুতরাং মডিউল বি, require('./A')একটি ফাংশন চেয়ে একটি খালি বস্তু।

নোড.জেজে চক্রীয় নির্ভরতা মোকাবেলা করতে কীভাবে


0

আমার জন্য, শাখাগুলির মধ্যে স্যুইচ করার সময় আমি একইরকম ত্রুটি পেয়েছি - একটি নতুন ব্যবহৃত ("টাইপসক্রিটিশ") @google-cloud/datastoreপ্যাকেজের নতুন সংস্করণ যা ডেটাস্টোর কনস্ট্রাক্টরের সাথে রফতানি হওয়া অবজেক্টের বৈশিষ্ট্য হিসাবে প্রত্যাবর্তন করে এবং আমি একটি কার্যের জন্য অন্য শাখায় স্যুইচ করেছিলাম, এটি একটি পুরানো ডাটাস্টোর সংস্করণ সেখানে ব্যবহৃত হয়েছিল, যা ডেটাস্টোর নির্মাণকারীকে "সরাসরি" module.exportsমান হিসাবে রফতানি করে । আমি ত্রুটিটি পেয়েছি কারণ নোড_মডিউলগুলিতে এখনও শাখাটি ব্যবহার করে নতুন মডিউল ব্যবহার করে আমি স্যুইচ করেছি।


0

আমিও এরকম কিছু মুখোমুখি হয়েছি। আপনার রুটস ফাইলে, ফাংশনটি এই জাতীয় বস্তু হিসাবে রফতানি করুন:

 module.exports = {
     hbd: handlebar
 }

এবং আপনার অ্যাপ্লিকেশন ফাইলটিতে, আপনি .hbd দ্বারা ফাংশনটিতে অ্যাক্সেস পেতে পারেন এবং কোনও টোলেবম নেই ....!


-1

আপনার রপ্তানি মনে রাখবেন routes.js

ইন routes.js, আপনার রুট এবং এই ফাংশন মডিউল সব আপনার কোড লিখুন:

exports = function(app, passport) {

/* write here your code */ 

}

-1

অ্যারো ফাংশনটিতে কেবল মোড়ুন যেখানে আপনার ফাইলগুলি প্রয়োজন


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