שאלות של מתחיל - מקצועי ב nodejs
-
עדיין לא התלהבתי מnodejs, אני צריך לעלות שלב למשהו יותר דינאמי, לחבר עליו מערכת אמיתית.
בינתיים בניתי מערכת אם התסריט הזה:
עדיין אינך רשום במערכת, הינך מועבר להרשמה חד פעמית
הקלט את שמך המלא, ולסיום הקש סולמית
הקש טלפון ליצירת קשר ולסיום הקש סולמית
לאחר הצליל הקלט את כתובתך המלאה, ולסיום הקש סולמית
השם שנקלט הוא
מספר הטלפון שהוקש הוא
הכתובת שהוקלטה היא
שלום ותודהנראה בהמשך מה הלאה
תודה בכל אופן על ההדרכות.
עדיין אני עובד משורת הפקודה, עדיין לא עם IDE.
מה שאני לא מבין שאחרי ביצוע שינויים בקובץ אני מקבל פלט:[nodemon] starting `node nodejs/test.js` events.js:183 throw er; // Unhandled 'error' event ^ Error: listen EADDRINUSE :::80 at Object._errnoException (util.js:1022:11) at _exceptionWithHostPort (util.js:1044:20) at Server.setupListenHandle [as _listen2] (net.js:1367:14) at listenInCluster (net.js:1408:12) at Server.listen (net.js:1492:7) at Object.<anonymous> (/home/ubuntu/nodejs/test.js:15:4) at Module._compile (module.js:652:30) at Object.Module._extensions..js (module.js:663:10) at Module.load (module.js:565:32) at tryModuleLoad (module.js:505:12) [nodemon] app crashed - waiting for file changes before starting...
אך בכל זאת השינויים מבוצעים ועובדים כפי השינויים, איך זה ייתכן? מה לא נכון בהבנה שלי?
-
@dovid @magicode
שאלה נוספת
לשם ההבנה, ברעיון זה אפשרי ותיקני לכתוב כמה קבצים נפרדים, וכל אחד יוגדר על פורט אחר, ולהפעיל אותם במקביל, ואז בעצם יש לנו כמה תהליכים של הנוד שהם פעילים בו זמנית כל אחד ליציאה אחרת?
כך היה נראה לי מהנסיונות שלי, כאשר הרצתי סקריפט חדש על פורט אחר, ושני הפורטים ממשיכים לעבוד.
האם זה בסדר? -
@WWW אמר בשאלות של מתחיל - מקצועי ב nodejs:
@clickone איך שהבנתי, במקרה שעובדים עם אסטריסק, יורדת הנחיצות לעובר ל node,
כי בין כך הקוד באמצע השיחה, לא כך?אדרבא זה אמור לעלות לדעתי.
כי אם זה תוך כדי קוד זה אומר שהבקשה תקועה כשהקוד ממתין למענה מאסטריסק.
ובקשה תקועה זה יקר, בPHP. -
@חוקר אני לא מכיר את החבילה הזו שאתה משתמש, לפי הפלט זה נראה שהוא מנסה להריץ פעמיים את האפליקציה ויש התנגשות בגלל ששתיהם מאזינות לאותו פורט, אולי אתה מעדכן בבת אחת שני קבצים אז הוא יורה פעמיים את העדכון?
בכל אופן לשאלתך איך השינויים מתבצעים, כנראה הפעם הראשונה נכשלת והפעם השניה עובדת -
@חוקר אמר בשאלות של מתחיל - מקצועי ב nodejs:
לשם ההבנה, ברעיון זה אפשרי ותיקני לכתוב כמה קבצים נפרדים, וכל אחד יוגדר על פורט אחר, ולהפעיל אותם במקביל, ואז בעצם יש לנו כמה תהליכים של הנוד שהם פעילים בו זמנית כל אחד ליציאה אחרת?
כך היה נראה לי מהנסיונות שלי, כאשר הרצתי סקריפט חדש על פורט אחר, ושני הפורטים ממשיכים לעבוד.
האם זה בסדר?
זה תקני כאשר אתה מריץ כמה אפליקציות נפרדות על אותו שרת, אז כל אפליקציה מאזינה לפורט אחר, אם מדובר באותה אפליקציה זה מיותר ומבזבז משאבים בלי צורך.
אם אני מבין נכון, מה שמניע אותך זה לקבל את נוד כמה שיותר דומה ל PHP, אז זה ניסיון סרק, אם אתה רוצה שרת פעיל במהירות, פשוט תתקין express. תכתוב את הפונקציות שאמורות לטפל בכל בקשה לפי ה URL, ותעשה ניתוב לפונקציה, יש מדריך טוב באתר של רן בר זיק על אקספרס וראוטינג. תתחיל ותדווח איפה נתקעת.
https://internet-israel.com/category/מדריכים/express/ -
@dovid @יוסף-בן-שמעון
איך אני יכול לשלוף נתונים נתונים מתוך אתר אחר ולהחזיר אותם לתוך משתנה?
משהו בצורתvar datafromurl = fetch('https://github.com/'); if (datafromurl = "ok"){ res.end(datafromurl); } else{ res.end("no"); }
לא הצלחתי להחזיר את הנתונים לתוך משתנה.
אשמח לעזרה בהקדם.
תודה -
@חוקר אמר בשאלות של מתחיל - מקצועי ב nodejs:
נוד היא סינכרונית, כלומר כשאתה שולח בקשה לשרת מרוחק המעבד ממתין לתשובה, בנתיים הקומפיילר לא מחכה אלא ממשיך לשורה הבאה, ועד שהתשובה מגיעה הוא כבר אוחז כמה שורות אח"כ ולכן הוא לא טוען את התשובה למשתנה.
הפתרון היא לעבוד עם callback או עם promise, לדוגמא במודול שאתה משתמש יש פרומיס מובנה, תראה כאן:
https://www.npmjs.com/package/node-fetch#plain-text-or-htmlfetch('https://github.com/') .then(res => res.text()) .then(body => console.log(body));
then הראשון ממיר את התשובה מאובייקט לטקסט, ומחזיר אותו ל then השני, ובשני אתה יכול לשלוח את התשובה לאיפה שאתה רוצה. משהו כזה:
app.get('/page', (req, res)=>{ fetch('https://github.com/') .then(response => response.text()) .then(body =>{ if (body = "ok"){ res.end(body); } else{ res.end("no"); } }); })```
-
@יוסף-בן-שמעון
תודה.
השאלה היא האם שייך כן לארוז את זה כפונקציה, כי אני רוצה לקבל json ולטפל אותו לנתח נתונים לתוך משתנים ועוד.
אני צריך אפשרות לקבל בסגנון שכתבתי בהתחלה.
יש מצב?
תודה -
@יוסף-בן-שמעון אמר בשאלות של מתחיל - מקצועי ב nodejs:
הפתרון היא לעבוד עם callback או עם promise, לדוגמא במודול שאתה משתמש יש פרומיס מובנה
מה זה פרומיס?
-
@חוקר אמר בשאלות של מתחיל - מקצועי ב nodejs:
@יוסף-בן-שמעון אמר בשאלות של מתחיל - מקצועי ב nodejs:
הפתרון היא לעבוד עם callback או עם promise, לדוגמא במודול שאתה משתמש יש פרומיס מובנה
מה זה פרומיס?
-
@חוקר אמר בשאלות של מתחיל - מקצועי ב nodejs:
@יוסף-בן-שמעון
תודה.
השאלה היא האם שייך כן לארוז את זה כפונקציה, כי אני רוצה לקבל json ולטפל אותו לנתח נתונים לתוך משתנים ועוד.
אני צריך אפשרות לקבל בסגנון שכתבתי בהתחלה.
יש מצב?
תודהאתה יכול במקום לכתוב
res.text()
להחליף ל
res.json()
ואז בפונקציה השניה אתה מקבל את הbody כ JSON
אגב יש מודול יותר פופולרי לבקשות משרתים מרוחקים, קוראים לו request, אתה יכול להתקין כךnpm i request
ולהשתמש כך:
var request = require('request'); app.get('/page', (req, res)=>{ request('https://github.com/', (err, response, body)=>{ body = JSON.parse(body); if(body.status == "ok") res.send("ok") else res.send("no") }) })
-
@יוסף-בן-שמעון
מצאתי את מה שרציתי..
https://www.npmjs.com/package/sync-request -
פוסט זה נמחק!
-
@dovid אמר בשאלות של מתחיל - מקצועי ב nodejs:
@חוקר אתה ממש ממש טועה.
אתה מנסה לכופף את האוטו ללמוד לעבוד עם סוסים, היחיד שמפסיד זה אתה.
היית יכול להכביר בשאלות, נענה לך בל"נ על הכל, רק אל תכפיף את המנטליות של nodejs האסינכרונית להרגלים שלך (אני גם השתגעתי, מבטיח לך).דבר ראשון אני צריך משהו שעובד..
אח"כ נוכל להמשיך... -
@חוקר אמר בשאלות של מתחיל - מקצועי ב nodejs:
@dovid אמר בשאלות של מתחיל - מקצועי ב nodejs:
@חוקר אתה ממש ממש טועה.
אתה מנסה לכופף את האוטו ללמוד לעבוד עם סוסים, היחיד שמפסיד זה אתה.
היית יכול להכביר בשאלות, נענה לך בל"נ על הכל, רק אל תכפיף את המנטליות של nodejs האסינכרונית להרגלים שלך (אני גם השתגעתי, מבטיח לך).דבר ראשון אני צריך משהו שעובד..
אח"כ נוכל להמשיך...אני חייב להמשיך לנהל את הלקוחות והשוטף תוך כדי למידה, לשנות כיוון חשיבה לא בא כ"כ מהר, אני עושה בינתיים למידה ועבודה בצורה אסינכרונית, כשבמקביל אני לומד את העיקרונות של התחביר האסינכרוני.
הרכבת לא עוצרת.
זה משהו שאני לא עיכלתי אותו עדיין.
בכל זאת תודה לכל העוזרים, בעזה"י עוד נגיע להכל.