@צדיק-תמים תוכל רגע לענות לי, אני רוצה להבין דבר יסודי בספריה, האם הid_list_message עוצר את הריצה או לא? ואם כן, למה זה ממשיך לרוץ?
eido
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה? -
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים אבל יש שגיאה, ואם אחצא כרגיל זה עלול להסתבך כמו שקרה בקוד שלי.
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים לא הבנתי איך אני אמור לטפל בשגיאה? נניח ואני רוצה לתפוס שגיאה ולהחזיר בשבילה למאזין פלט ספציפי, איך עושים את זה? הרי אח"כ הקוד ימשיך לרוץ כי הid_list_message לא עוצר את הריצה.
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?לא יודע לא מצליח לי
https://drive.google.com/file/d/1TEiEr9******0dx2YkX5-hNkouUyecCmU9Voaz/view -
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:
יש אפילו אחד מובנה ב VSC, זה דרך המלך
שלו
ניסיתי עכשיו לדבאג דרך הvsc ולא הוא לא נותן שום נתון -
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים נו, תשתף אותי מה שמו.
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים איך אפשר לדבאג קוד שאמור לרוץ על שרת?
הוא הרי אמור לקבל בקשות, לא? -
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים אז אני יכול למחוק את כל הtry/catch מהפרוייקט?
-
מחפש בונה ממשק ווב שיתממשק עם מערכת קיימתבשביל לקוח, בניתי את כל הליבה של הצד שרת + ממשק טלפוני, צריך מישהו שיבנה GUI למנהל המערכת.
במייל stamandsefer של ג'ימייל.כרגע כבר לא רלוונטי.
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?כולם התאדו לי כאן באמצע המתח
מחקתי את הtry/catch ובאמת הוא זורק שגיאה אבל לא קורס!
זה גם לא מצב אופטימלי לדעתי, אבל לפחות לא קורס... -
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?אהה כנראה שהוא ניתק והשרת של ימות המשיח פשוט שלח &ApiHangupExtension=1/1/1/1/1&hangup=yes& ואז הcatch תפס את השגיאה והודיע על שגיאה למרות שהוא כבר ניתק וזה מה שגרם לאפליקציה לקרוס.
לקחתי את הurl של השגיאה, בלי הסוף (החלק של הניתוק) והרצתי בpostman ולא קרה כלום, רק אחרי שהוספתי את החלק של הניתוק פתאום הוא קרס פעם אחר פעם.
מה אומר @צדיק-תמים יכול להיות?
ומה הפתרון?
@צדיק-תמים @dovid אתם בעצם מציעים להוריד לגמרי את הtry/catch? -
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@dovid אני מתחיל לחשוב שהid_list_message לא סוגר באמת את החיבור.
כי כל הלוגים מראים בעיה בשורה 7 בקוד הראשון:while(okStreet!="1") { -> let ans = await call.read([{ type: 'file', data: "/ivr_records/רחוב1" }], "record");ואז בעצם קורה כדלהלן (כך אני משער):
הtry בreco תופס שגיאה לא ברורה - אני לא מצליח למצוא שום בדל מידע מה השגיאה, נכנס לcatch משאיר לוג ארוך ולא כ"כ מועיל (מה שכן דליתי ממנו זה:Error: HangupError: the call was hangup by the caller at EventEmitter.<anonymous>ושמשום מה התווסף לurl
&ApiHangupExtension=1/1/1/1/1&hangup=yes&)
מפעיל אתcall.id_list_message([{ type: 'text', data: "אירעה שגיאה" }]);שלכאורה אמור לסיים את הקוד (ככה אני מבין מהתיעוד)
this.send(this.#responsesTextQueue.pull() + responseTxt + '&'); throw new ExitError(this, { target: goToFolderMessageIndex !== -1 ? messages[goToFolderMessageIndex].data : `parent of /${this.extension}`, caller: goToFolderMessageIndex !== -1 ? 'go_to_folder' : 'id_list_message' });אבל במקום זה חוזר בחזרה לchooseStreet שקראה לו, בלי להחזיר ערך לstreet, ככה שהוא null.
הוא מגיע לשורה הזו:if (street==null) {continue;}ומתחיל את הלולאה מחדש.
ואז מגיע שוב לשורה:while(okStreet!="1") { -> let ans = await call.read([{ type: 'file', data: "/ivr_records/רחוב1" }], "record");ופה זורק שגיאה שא"א לשלוח עוד פעם הודעה למאזין.
ככה אני מניח.
אבל זה לא מסביר לי למה רק השגיאה השלישית הקריסה את האפליקציה - עובדה שאחריה כתוב node is starting - ואילו השאר לא הקריסו.
ואני גם לא רואה פתרון כאן... בגלל שהשגיאה נמצאת בתוך פונקציה, וגם אם אעצור אותה היא תחזור לפונקציה שקראה לה ושם היא תמשיך.
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@dovid למה? סיכמנו שהid וכו מודיע הודעה למאיזן ויוצא מהשלוחה, מה יותר אלגנטי מזה?
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:
@dovid הכי טוב היה בלי try בלבד חוץ מנקודתי בשורה שרוצים לטפל בשגיאות שלה בצורה שונה
יש לספריה קאלבק מיוחד כדי לטפל בשגיאות לא צפויות בצורה מרוכזת במקום לפזר בקוד try catchאהה חזק, עכשיו הבנתי מה התכוונת.
אבל זה תופס את כל החריגות?
איך זה עובד? -
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@dovid כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:
@eido אחרי שההשמצות האלה יגרמו לך להשתפר, תבקש לקבל עוד.

היינו מכוונים אותך יותר ספציפית, אבל זה סטיה מהנושא.
עניינית אתה צריך להוסיף return או לשנות את מבנה הקוד, שהשורה id_list_message לא תהיה בתוך בלוק של try.למה להוציא מהcatch? הרי כל המטרה של זה היא להודיע ללקוח ולצאת באלגנטיות.
נ.ב. אם יותר מתאים לך באישי, אשמח לכוון אותך יותר, אני מתפרנס מזה.
אני רוצה האמת, חשבתי על זה ברצינות, אבל צריך תקציב... אבל עוד חזון למועד. אגב, אתה מכיר טוב nodejs? לא ראיתי שכתבת באתר שלך על השפה הזו.
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@יהודי-טוב כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:
@eido כתב בלוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?:
הtry/catch הארוך הוא כי עשיתי שינוי על שינוי לטובת הלקוח. אז נשאר כזה ארוך, סתם להבין מה רע בזה?
1 - בגדול זה שזה ארוך זה לא ממקד אותך בבעיה
2 - הוא כתב שעדיף בלי, כי אם אתה לא מטפל בשגיאה אז זה נזרק הלאה ויש לו בספריה טיפול בשגיאות.
אז אתה יכול לטפל שם בשגיאות..אתה צודק, אבל כאן אין לי כ"כ מה לעשות עם הבעיה... אם המערכת נתקלה בבעיה בזיהוי שם הרחוב אין לי מה לעשות... פשוט להודיע ללקוח יפה שקרתה שגיאה ולנתק... הוא גם מדפיס לי בלוג כדי שאני אדע במה לטפל, מעבר לזה מה אני צריך?
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@צדיק-תמים אם אני מבין נכון, לא עושים בכאלו מקרים לא await ואין צורך בreturn, או שלא הבנתי נכון.
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?@dovid @צדיק-תמים
לכל מאן דבעי:
אני משתמש בide ואני מבין דבר או שניים במה שאני עושה.
קודם כל היה חשוב לי לעדכן בעקבות ההשמצות
דבר שני. יתכן ויש איזה סוגר מיותר כי מחקתי כאן דברים באמצע כדי לא להכביד על הרבנים המשיבים.
לא הבנתי מה יצא מכל הסיפור זה טוב try/catch? זה לא טוב? למה זה קרס?
הtry/catch הארוך הוא כי עשיתי שינוי על שינוי לטובת הלקוח. אז נשאר כזה ארוך, סתם להבין מה רע בזה? -
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?הפקודה הזו call.id_list_message( אמורה לעצור את הקוד, אין סיבה לעצור אותו בנפרד... ככה אני מבין את זה.
-
לוגי שגיאה בnodejs וyemotrouter מה הגורם לקריסה?יש כאן כמה לוגים של שגיאה, רק אחד מהם גרם לקריסה ממש, אשמח לדעת מה גרם לקריסה, ומה הוא שונה מהשאר. לכאורה הם בערך אותם שגיאות.
[31m[541eba6e6682e37cee0ae3e53f2d794defc28d29]:
Uncaught error. applying uncaughtErrorHandler (node:internal/errors:405:5)[39m
Uncaught error in / from . error stack: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:405:5)
at ServerResponse.setHeader (node:_http_outgoing:655:11)
at ServerResponse.header (/home/node.stamandsefer.co.il/public_html/node_modules/express/lib/response.js:684:10)
at ServerResponse.send (/home/node.stamandsefer.co.il/public_html/node_modules/express/lib/response.js:161:12)
at Call.send (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:264:18)
at sendResp (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:170:18)
at Call.read (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:179:15)
at choosestreet (file:///home/node.stamandsefer.co.il/public_html/src/utils/utils_func.js:141:30)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async callHandler (file:///home/node.stamandsefer.co.il/public_html/src/controllers/addAdController.js:60:22)
[31m[541eba6e6682e37cee0ae3e53f2d794defc28d29]: Cannot send id_list_message after sending response (probably done from uncaughtErrorHandler due to error in asynchronous code[31m[a7d099fc6c8dea530efaabba6c1b4ceb5476adb8]:
Uncaught error. applying uncaughtErrorHandler (node:internal/errors:405:5)[39m
Uncaught error in / from . error stack: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:405:5)
at ServerResponse.setHeader (node:_http_outgoing:655:11)
at ServerResponse.header (/home/node.stamandsefer.co.il/public_html/node_modules/express/lib/response.js:684:10)
at ServerResponse.send (/home/node.stamandsefer.co.il/public_html/node_modules/express/lib/response.js:161:12)
at Call.send (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:264:18)
at sendResp (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:170:18)
at Call.read (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:179:15)
at choosestreet (file:///home/node.stamandsefer.co.il/public_html/src/utils/utils_func.js:141:30)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async callHandler (file:///home/node.stamandsefer.co.il/public_html/src/controllers/addAdController.js:60:22)
[31m[a7d099fc6c8dea530efaabba6c1b4ceb5476adb8]: Cannot send id_list_message after sending response (probably done from uncaughtErrorHandler due to error in asynchronous code[31m[b142a8637dd7dced030099e0f6655a63da484e0b]:
Uncaught error. applying uncaughtErrorHandler (node:internal/errors:405:5)[39m
Uncaught error in / from . error stack: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:405:5)
at ServerResponse.setHeader (node:_http_outgoing:655:11)
at ServerResponse.header (/home/node.stamandsefer.co.il/public_html/node_modules/express/lib/response.js:684:10)
at ServerResponse.send (/home/node.stamandsefer.co.il/public_html/node_modules/express/lib/response.js:161:12)
at Call.send (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:264:18)
at sendResp (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:170:18)
at Call.read (file:///home/node.stamandsefer.co.il/public_html/node_modules/yemot-router2/lib/call.js:179:15)
at choosestreet (file:///home/node.stamandsefer.co.il/public_html/src/utils/utils_func.js:141:30)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async callHandler (file:///home/node.stamandsefer.co.il/public_html/src/controllers/addAdController.js:60:22)
[31m[b142a8637dd7dced030099e0f6655a63da484e0b]: Cannot send id_list_message after sending response (probably done from uncaughtErrorHandler due to error in asynchronous code after returning response)[39m
Node starting...
app.js running on port 3000export async function choosestreet(call, city) { let menuStreet = "", digitsStreet=[], street; let okStreet = "0"; while(okStreet!="1") { let ans = await call.read([{ type: 'file', data: "/ivr_records/רחוב1" }], "record"); console.log(ans); try{ const keywords = JSON.stringify(streets[city]); street = await reco(call, ans,keywords, city); if (street==null) {continue;} } catch (error) { console.error("Error:", error); call.id_list_message([{ type: 'text', data: "אירעה שגיאה" }]); } { // מבקש אישור okStreet = await call.read([{ type: 'file' , data: `/ivr_records/${street}` },{ type: 'file' , data: "/ivr_records/אישור2" }], 'tap', { sec_wait: 2, min_digits: 1, typing_playback_mode: "No", digits_allowed: [1,2, "*0"] }); if (okStreet=="1") {return street;} else if (okStreet == "*0") {call.go_to_folder(mainextPath);} } }async function reco(call, ans, keywords,city) { try{ const { stdout, stderr } = await execFileAsync("python3", [ "/recognizeNew.py", ans,keywords]); const matches = JSON.parse(stdout); console.log(matches); if (stderr) { console.error("Python stderr:", stderr); } if (matches.length==0) { const { stdout, stderr } = await execFileAsync("python3", [ "recognize.py", ans,keywords]); if (stderr) { console.error("Python stderr:", stderr); } let recognizedText = stdout.trim(); // הסר רווחים ושורות מיותרות if(streets[city].includes(recognizedText)) { return recognizedText; } else {call.id_list_message([/*{type: 'text', data: "לא זיהינו את הרחוב שהקלטת"}*/{ type: 'file', data: "/ivr_records/שגיאה זיהוי" }],{prependToNextAction: true});} } else if (matches[0].score == 100) {return matches[0].name;} else { let msgmatches = [], digitsmatches=[]; for (let i = 0; i < matches.length; i++) { msgmatches.push({ type: 'file', data: `/ivr_records/${matches[i].name}` }); msgmatches.push({ type: 'file', data: `/ivr_records/הקש` }); msgmatches.push(...Object.values(numberToHebrewWords(i+1))); digitsmatches.push((i + 1).toString()); } digitsmatches.push("*0"); let street; for(let i = 0; i<3; i++) { street = await call.read(msgmatches, 'tap', { max_digits: 2, sec_wait: 2, min_digits: 1, digits_allowed: digitsmatches, typing_playback_mode: "No" }); if (street == "*0") {call.go_to_folder(mainextPath);} if (!digitsmatches.includes(street)) { continue; // אם הקיש מספר לא חוקי – חוזר על הלולאה } const index = Number(street) - 1; if (index >= matches.length) { continue; // אם הקיש מספר לא חוקי – חוזר על הלולאה } street = matches[index].name; return street; } call.hangup(); } } catch (error) { console.error("Error:", error); call.id_list_message([{ type: 'text', data: "אירעה שגיאה" }]); } }