मैं नोड में एक वेब ऐप लिख रहा हूं। अगर मुझे db.js
इसमें फ़ंक्शन के साथ कुछ JS फाइल मिली है तो मैं init
कमांड लाइन से उस फ़ंक्शन को कैसे कॉल कर सकता हूं?
मैं नोड में एक वेब ऐप लिख रहा हूं। अगर मुझे db.js
इसमें फ़ंक्शन के साथ कुछ JS फाइल मिली है तो मैं init
कमांड लाइन से उस फ़ंक्शन को कैसे कॉल कर सकता हूं?
जवाबों:
कोई टिप्पणी नहीं कि आप ऐसा क्यों करना चाहते हैं, या एक अधिक मानक अभ्यास क्या हो सकता है: यहां आपके प्रश्न का समाधान है .... ध्यान रखें कि आपके कमांड लाइन द्वारा आवश्यक उद्धरणों के प्रकार भिन्न हो सकते हैं।
अपने में db.js
, init
फंक्शन को एक्सपोर्ट करें । कई तरीके हैं, लेकिन उदाहरण के लिए:
module.exports.init = function () {
console.log('hi');
};
फिर इसे इस तरह से कॉल करें, मान लें कि आपकी db.js
निर्देशिका उसी कमांड में है जो आपका कमांड प्रॉम्प्ट है:
node -e 'require("./db").init()'
अन्य पाठकों के लिए, ओपी के init
कार्य को कुछ भी कहा जा सकता है, यह महत्वपूर्ण नहीं है, यह प्रश्न में प्रयुक्त विशिष्ट नाम है।
module.exports.init = function () { console.log('hi'); };
और node -e 'require("./db").init()'
मेरे लिए किसी तरह काम नहीं किया। मुझे यकीन नहीं है कि मैंने क्या गलत किया, लेकिन आपके विचार का पालन करते हुए, मैंने उपयोग किया module.exports = myFunction,
, और फिर node -e 'require("./myFunction")()'
मेरे लिए काम किया।
node -e 'require("./index").handler(require("./fixtures/sample_event_01.json"), {}, console.log)'
:। बीच {}
का संदर्भ होगा, बेझिझक समायोजित करें। साथ ही कंसोल .log थोड़ा आदिम है लेकिन एक अच्छी शुरुआत है। बेशक आप एक समर्पित CLI.js भी लिख सकते हैं, जो अन्य टिप्पणियों में बताए अनुसार index.js / हैंडलर की आवश्यकता होती है।
अन्य उत्तरों के अनुसार, निम्नलिखित में जोड़ें someFile.js
module.exports.someFunction = function () {
console.log('hi');
};
आप इसके बाद निम्न जोड़ सकते हैं package.json
"scripts": {
"myScript": "node -e 'require(\"./someFile\").someFunction()'"
}
टर्मिनल से, फिर आप कॉल कर सकते हैं
npm run myScript
मुझे कमांड्स को याद करने और उनका उपयोग करने का यह बहुत आसान तरीका लगता है
सीएलआई (वैश्विक) से सीधे चलाएँ
इंस्टॉल
npm i -g run-func
उपयोग अर्थात् रन फ़ंक्शन "इनिट", इसे निर्यात किया जाना चाहिए, नीचे देखें
run-func db.js init
या
Package.json स्क्रिप्ट (स्थानीय) से चलाएँ
इंस्टॉल
npm i -S run-func
सेट अप
"scripts": {
"init": "run-func db.js init"
}
प्रयोग
npm run init
पैरामीटर
कोई भी निम्न तर्क फ़ंक्शन मापदंडों के रूप में पारित किया जाएगा init(param1, param2)
run-func db.js init param1 param2
जरूरी
फ़ंक्शन (इस उदाहरण में init
) को फ़ाइल में निर्यात किया जाना चाहिए
module.exports = { init };
या ES6 निर्यात
export { init };
make-runnable
, लेकिन यह उससे बहुत बेहतर है, मुझे लगता है। धन्यवाद।
npm i -g run-func
सरल तरीका:
मान लीजिए कि आपके पास प्रोजेक्ट संरचना में एक हेल्पर्स डायरेक्टरी में db.js फ़ाइल है।
अब हेल्पर्स डायरेक्टरी के अंदर जाएं और नोड कंसोल पर जाएं
helpers $ node
2) db.js फ़ाइल की आवश्यकता है
> var db = require("./db")
3) अपने फ़ंक्शन को कॉल करें (आपके मामले में इसकी init ())
> db.init()
उम्मीद है की यह मदद करेगा
यह गंदा है लेकिन काम करता है :)
मैं main()
अपनी स्क्रिप्ट से फंक्शन बुला रहा हूं। पहले मैं सिर्फ स्क्रिप्ट के अंत में मुख्य पर कॉल करता था। हालाँकि मैंने कुछ अन्य फ़ंक्शंस जोड़े और उन्हें स्क्रिप्ट से निर्यात किया (कोड के कुछ अन्य भागों में फ़ंक्शंस का उपयोग करने के लिए) - लेकिन मैं हर बार जब मैं अन्य स्क्रिप्ट्स में अन्य फ़ंक्शंस आयात करता हूं तो मैं मुख्य () फ़ंक्शन को निष्पादित नहीं करना चाहता।
तो मैंने ऐसा किया, अपनी स्क्रिप्ट में मैंने मुख्य () को कॉल हटा दिया, और स्क्रिप्ट के अंत में मैंने यह चेक डाल दिया:
if (process.argv.includes('main')) {
main();
}
इसलिए जब मैं CLI में उस फ़ंक्शन को कॉल करना चाहता हूं: node src/myScript.js main
मैं एक IIFE करता हूं, कुछ ऐसा है:
(() => init())();
यह कोड तुरंत निष्पादित किया जाएगा और init फ़ंक्शन को लागू करेगा।
node init.js
और फ़ाइल में एक IIFE है तो यह काम करेगा। मुझे लगता है कि मैं आपके सवाल को पूरी तरह से नहीं समझ पाया। माफ़ करना।
(init)();
तो इसे सरल भी बना सकते हैं :)
जावास्क्रिप्ट फ़ाइल testfile.js में सरल:
module.exports.test = function () {
console.log('hi');
};
this.test();
प्रॉम्प्ट पर चल रहा है:
node testfile.js
test
में हर बार चलाया जाता है, इसलिए आपको फ़ाइल को किसी अन्य फ़ंक्शन को कॉल करने के लिए बदलना होगा)
यदि आपकी फ़ाइल में आपका फ़ंक्शन है, उदाहरण के लिए:
myFile.js:
function myMethod(someVariable) {
console.log(someVariable)
}
कमांड लाइन से इसे इस तरह से कॉल करने से कुछ नहीं होगा:
node myFile.js
लेकिन अगर आप अपनी फ़ाइल बदलते हैं:
myFile.js:
myMethod("Hello World");
function myMethod(someVariable) {
console.log(someVariable)
}
अब यह कमांड लाइन से काम करेगा:
node myFile.js