मैं सार्वजनिक फ़ोल्डर में एक स्क्रिप्ट से अपनी मुख्य index.js फ़ाइल में एक स्क्रिप्ट चलाने की कोशिश कर रहा हूँ। मुझे नहीं पता कि दोनों को कैसे जोड़ा जाए।

मैं ऐसा करने की कोशिश कर रहा हूं क्योंकि मुझे सर्वर की तरफ फाइल सिस्टम ऑपरेशंस चलाने की जरूरत है। मैंने स्क्रिप्ट को मुख्य HTML फ़ाइल में लिंक करने का प्रयास किया है, लेकिन जब मैं फ़ंक्शन को चलाने का प्रयास करता हूं, तो यह नहीं मिल सकता है।

मेरी अनुक्रमणिका फ़ाइल:

const express = require('express');
const bodyParser = require('body-parser');
var fs = require("fs");

const app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.use(express.static('public'));

app.get('/', (req, res) => {
  res.sendFile('public/index.html');
});

app.listen(3000, () => console.log('server started'));

function test() {
  console.log("test");
}

सार्वजनिक फ़ोल्डर में मेरी स्क्रिप्ट में बस test(); है

मेरा लिंकिंग एचटीएमएल

 <script src="script.js"></script>
 <script src="../index.js"></script>

मैं परीक्षण समारोह चलाने की उम्मीद कर रहा हूं, और 'परीक्षण' लॉग इन कर रहा हूं। यह नहीं है, और मुझे कोई कंसोल लॉग या त्रुटियां नहीं मिलती हैं।

सभी कोड repl.it पर उपलब्ध हैं

0
LukeIsMe 20 अगस्त 2019, 19:17

4 जवाब

सबसे बढ़िया उत्तर

लोग कहते हैं कि Node.JS की सबसे अच्छी विशेषता क्लाइंट और सर्वर पर समान कोड का उपयोग करने की क्षमता है। हालांकि यह इतना आसान नहीं है।

आप सार्वजनिक फ़ोल्डर के बाहर अपने HTML में कोड शामिल नहीं कर सकते। यदि आप सर्वर साइड पर किसी फ़ंक्शन को कॉल करना चाहते हैं, तो आपको ऐसा कुछ करने की आवश्यकता होगी:

app.get('/test', (req, res) => {
  test() // will log on the server side
  res.send("All ok!");
});

और अनुरोध करें कि ग्राहक पक्ष पर ऐसा:

fetch('/test').then(res => {
  console.log('got result from server!')
})

अनिवार्य रूप से, आप केवल सर्वर साइड पर फ़ंक्शन को कॉल नहीं कर सकते - आपको HTTP के माध्यम से सर्वर से बात करनी होगी। आप जो कर सकते हैं उपयोगिता कार्यों के साथ एक साझा फ़ोल्डर बना सकते हैं जिसे आप क्लाइंट और सर्वर दोनों पर शामिल कर सकते हैं, लेकिन वे नोड मॉड्यूल के किसी भी संदर्भ के साथ नहीं लिखे जा सकते जब तक कि आप एक बंडलर का उपयोग नहीं करते (जैसे वेबपैक / रोलअप के रूप में)।

1
Sam L 20 अगस्त 2019, 19:31

आप सर्वर साइड में index.js के सार्वजनिक फ़ोल्डर में स्क्रिप्ट नहीं चला सकते। क्योंकि index.js एक सर्वर में चलने वाली एक स्क्रिप्ट है। इसे क्लाइंट (वेब ​​ब्राउज़र) में चलने वाले public फ़ोल्डर में स्क्रिप्ट शामिल नहीं किया जा सकता है। script.js को सार्वजनिक फोल्डर में चलाने के लिए आप सर्वर में scirpt.js नाम से एक नई फाइल बना सकते हैं।

Script.js

module.exports = function test () {
  // do some stuff
};

और index.js में आयात करें।

इंडेक्स.जेएस

const express = require('express');
const bodyParser = require('body-parser');
// import test function from script.js file in here
const test = require('./script.js');
var fs = require("fs");

const app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.use(express.static('public'));

app.get('/', (req, res) => {
  res.sendFile('public/index.html');
});

app.listen(3000, () => console.log('server started'));

// using it in here
test();

const test = require('./script.js'); script.js फ़ाइल से function test आयात करने के लिए उपयोग कर रहा है और अंतिम पंक्ति test() में इसका उपयोग कर रहा है।

0
Trần Công 20 अगस्त 2019, 19:45

आप अपने सर्वर स्क्रिप्ट में किसी अन्य स्क्रिप्ट से कोई फ़ंक्शन नहीं चला सकते जो ब्राउज़र में चल रहा है जब तक कि फ़ंक्शन को अंतिम बिंदु के माध्यम से कॉल करने के लिए सेट नहीं किया जाता है। सर्वर स्क्रिप्ट और ब्राउज़र स्क्रिप्ट एक ही सिस्टम में नहीं चल रहे हैं, इसलिए वे एक दूसरे में कार्यों को एक सादे फैशन में कॉल करने के लिए समान निष्पादन संदर्भ साझा नहीं करते हैं।

यहां बताया गया है कि आप सर्वर फ़ंक्शन को किसी अन्य सिस्टम से कॉल करने में सक्षम होने के लिए कैसे सेट करते हैं।

app.get('/runtest', (req, res) => {
  test();
  rest.status(200).send('Ok');
});

अब आप इसे अपनी ब्राउज़र स्क्रिप्ट से ajax के माध्यम से कॉल कर सकते हैं।

0
Charlie 20 अगस्त 2019, 19:40

आप क्लाइंट साइड जावा स्क्रिप्ट और सर्वर साइड नोड जेएस फ़ाइल से भ्रमित हैं। index.js सर्वर साइड नोड js फ़ाइल है। इसमें एक्सप्रेस लिंक है और अब नोड इंडेक्स.जेएस की तरह चलता है यदि आप नोड जेएस एप्लिकेशन के अंदर जावा स्क्रिप्ट फ़ंक्शन का उपयोग करना चाहते हैं तो आप इस उदाहरण का उपयोग कर सकते हैं।

http://techslides.com/client-side-javascript-to-node- जेएस बाकी इस लाइन का उपयोग नोडज सर्वर साइड जेएस फाइल के लिए नहीं किया जा सकता है।

0
Jin Thakur 20 अगस्त 2019, 19:36