• הרשמה
    • התחברות
    • חיפוש
    • דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • קבלת התראות מהדפדפן
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private

    עזרה בתחילת העבודה עם הספריה לnodejs למתחיל

    פורום מפתחים API
    2
    11
    221
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • צ
      צדיק תמים מומחה @מוטי מן נערך לאחרונה על ידי צדיק תמים

      @מוטי-מן יש דוגמה, ראית אותה? כדאי גם לעבור על התיעוד.

      מ תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • מ
        מוטי מן @צדיק תמים נערך לאחרונה על ידי מוטי מן

        @צדיק-תמים עברתי, ולא ממש הבנתי את הדוגמה עצמה, היא יותר מידי עמוסה ומורכבת 😞

        האם אפשר לטעון את הדוגמה עצמה כך

        nodejs exmple.js
        

        ?

        א"כ, אילו מודולים צריך להתקין?

        צ 2 תגובות תגובה אחרונה תגובה ציטוט 0
        • צ
          צדיק תמים מומחה @מוטי מן נערך לאחרונה על ידי

          @מוטי-מן הנה דוגמה יותר מופשטת:

          import { YemotRouter } from 'yemot-router2';
          import express from 'express';
          export const app = express();
          
          export const router = YemotRouter({ printLog: true });
          
          /** @param {import('yemot-router2').Call} call */
          async function callHandler (call) {
              const choice = await call.read([{
                  type: 'text',
                  data: 'לשלום עולמי הקש 1 לבית חלומי הקש 2'
              }], 'tap', {
                  max_digits: 1,
                  digits_allowed: [1, 2]
              });
          
              console.log('choice', choice);
          
              return call.id_list_message([{
                  type: 'text',
                  data: 'שלום ותודה'
              }]);
          }
          
          router.get('/', callHandler);
          
          app.use(router);
          
          const port = 3000;
          app.listen(port, () => console.log(`example yemot-router2 running on port ${port}`));
          

          כדי להריץ אותה יש להתקין קודם את התלות:

          npm install express yemot-router2
          
          תגובה 1 תגובה אחרונה תגובה ציטוט 1
          • צ
            צדיק תמים מומחה @מוטי מן נערך לאחרונה על ידי

            @מוטי-מן כתב בעזרה בתחילת העבודה עם הספריה לnodejs למתחיל:

            @צדיק-תמים עברתי, ולא ממש הבנתי את הדוגמה עצמה, היא יותר מידי עמוסה ומורכבת 😞

            האם אפשר לטעון את הדוגמה עצמה כך

            nodejs exmple.js
            

            ?

            א"כ, אילו מודולים צריך להתקין?

            כדי להריץ את הדוגמה ששם תוריד את כל הrepo למחשב, תריץ npm install ואז npm run example (שזה בעצם node --watch example.js)

            מ תגובה 1 תגובה אחרונה תגובה ציטוט 1
            • מ
              מוטי מן @צדיק תמים נערך לאחרונה על ידי

              @צדיק-תמים כיצד ניתן לעבוד עם api_url_post=yes?

              אני מקבל את השגיאה

              
              Error: YemotRouter: it look you use api_url_post=yes, but you didn't include express.urlencoded({ extended: true }) middleware! (https://expressjs.com/en/4x/api.html#express.urlencoded)
                  at file:///var/www/node/node_modules/yemot-router2/lib/yemot_router.js:122:35
                  at Layer.handle [as handle_request] (/var/www/node/node_modules/express/lib/router/layer.js:95:5)
                  at next (/var/www/node/node_modules/express/lib/router/route.js:144:13)
                  at Route.dispatch (/var/www/node/node_modules/express/lib/router/route.js:114:3)
                  at Layer.handle [as handle_request] (/var/www/node/node_modules/express/lib/router/layer.js:95:5)
                  at /var/www/node/node_modules/express/lib/router/index.js:284:15
                  at Function.process_params (/var/www/node/node_modules/express/lib/router/index.js:346:12)
                  at next (/var/www/node/node_modules/express/lib/router/index.js:280:10)
                  at Function.handle (/var/www/node/node_modules/express/lib/router/index.js:175:3)
                  at router (/var/www/node/node_modules/express/lib/router/index.js:47:12)
              
              צ תגובה 1 תגובה אחרונה תגובה ציטוט 0
              • צ
                צדיק תמים מומחה @מוטי מן נערך לאחרונה על ידי צדיק תמים

                @מוטי-מן כתוב לך בדיוק מה הבעיה 🤔

                @מוטי-מן כתב בעזרה בתחילת העבודה עם הספריה לnodejs למתחיל:

                Error: YemotRouter: it look you use api_url_post=yes, but you didn't include express.urlencoded({ extended: true }) middleware! (https://expressjs.com/en/4x/api.html#express.urlencoded)

                מ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                • מ
                  מוטי מן @צדיק תמים נערך לאחרונה על ידי

                  @צדיק-תמים כן אבל זה לא ממש מובן, לפחות לאנשים כמוני 🙄

                  ובדרך אגב, יש דרך לשמור את הלוגים שהספריה מדפיסה לקובץ כלשהו בשרת?

                  צ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                  • צ
                    צדיק תמים מומחה @מוטי מן נערך לאחרונה על ידי

                    @מוטי-מן אתה צריך להוסיף:

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

                    ממליץ לך שאחרי שהצלחת להקים hellow world תעבור על הדוגמה המלאה.

                    @מוטי-מן כתב בעזרה בתחילת העבודה עם הספריה לnodejs למתחיל:

                    ובדרך אגב, יש דרך לשמור את הלוגים שהספריה מדפיסה לקובץ כלשהו בשרת?

                    הספריה משתמשת בconsole.log, אתה יכול להפנות את הפלט של התהליך לקובץ טקסט:

                    node app.js >> log.txt
                    

                    כדי להחליף כל פעם את הקובץ במקום להוסיף, תשתמש ב> אחד.

                    עבור השרת אני ממליץ להשתמש בpm2 (https://tchumim.com/topic/2190/pm2-כלי-לניהול-והרצת-אפליקציות-טרמינל), כלי נוח מאוד שגם מאפשר לשמור את הלוגים עם תאריך ושעה אוטומטי, הפעלה אוטומטית של האפליקציות אחרי הפעלה מחדש, ועוד המון דברים.

                    מ תגובה 1 תגובה אחרונה תגובה ציטוט 1
                    • מ
                      מוטי מן @צדיק תמים נערך לאחרונה על ידי

                      @צדיק-תמים ניסיתי את זה כבר, ככה

                      router.get('/', call);
                      router.post('/', call);
                      app.use(router);
                      app.use(express.urlencoded({ extended: true }));
                      

                      או ככה

                      router.get('/', call);
                      router.post('/', call);
                      app.use(router, express.urlencoded({ extended: true }));
                      

                      ועדיין מחזיר לי את השגיאה הנ"ל בעת קריאה בpost

                      צ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                      • צ
                        צדיק תמים מומחה @מוטי מן נערך לאחרונה על ידי צדיק תמים

                        @מוטי-מן השורה שהוספת צריכה להיות לפני הapp.use(router), כמו כל middleware

                        app.use(express.urlencoded({ extended: true }));
                        router.get('/', call);
                        router.post('/', call);
                        app.use(router);
                        

                        אגב זה לא משהו של הספריה שלי, גם אם היית בונה שרת HTTP באקספרס פשוט ושולח אליו בצורה שימות שולחים בpost, היית צריך את המידלוור הזה.

                        תגובה 1 תגובה אחרונה תגובה ציטוט 1
                        • פוסט ראשון
                          פוסט אחרון