brookshi / Hitchhiker

a Restful Api test tool
http://www.hitchhiker-api.com
Other
2.19k stars 402 forks source link

Hitchhiker cannot send E-Mails #216

Closed robin-rpr closed 6 years ago

robin-rpr commented 6 years ago

Docker Image: brookshi/hitchhiker:v0.13 (aka. vibrant_hugle) Docker Image: mysql:5.7 (aka. hitchhiker-mysql) OS: Cent OS 7 (64 Bit)

What steps will reproduce the problem? (1) Go to "Projekt" > Select a project > Invite Members (2) Type in an email address and click OK (3) Get this Error message.

Note: The same problem applies to the "API Request FAIL" E-mail notifications.

What is the expected result?

Hitchhiker sends an E-mail invitation.

What happens instead?

Get this Error message and the following console log:

[2018-07-05 00:33:06] PM2 log: Launching in no daemon mode
[2018-07-05 00:33:06] PM2 log: Starting execution sequence in -fork mode- for app name:index id:0
[2018-07-05 00:33:06] PM2 log: App name:index id:0 online
[2018-07-05 00:33:16] PM2 log: Stopping app:index id:0
[2018-07-05 00:33:17] PM2 log: App [index] with id [0] and pid [16], exited with code [0] via signal [SIGINT]
[2018-07-05 00:33:17] PM2 log: pid=16 msg=process killed
[2018-07-05 00:33:17] PM2 log: PM2 successfully stopped
[2018-07-05 00:33:18] PM2 log: Launching in no daemon mode
[2018-07-05 00:33:18] PM2 log: Starting execution sequence in -fork mode- for app name:index id:0
[2018-07-05 00:33:18] PM2 log: App name:index id:0 online
[2018-07-05 00:34:19.559] [ERROR] console - TypeError: Cannot read property 'err' of undefined
    at results.every.rst (/usr/src/Hitchhiker/api/controllers/project_controller.ts:149:54)
    at Array.every (native)
    at ProjectController.<anonymous> (/usr/src/Hitchhiker/api/controllers/project_controller.ts:149:37)
    at Generator.next (<anonymous>)
    at fulfilled (/usr/src/Hitchhiker/build/controllers/project_controller.js:16:58)
    at process._tickDomainCallback (internal/process/next_tick.js:135:7)
[2018-07-05 00:34:19.592] [ERROR] console - 
[2018-07-05 00:34:19.592] [ERROR] console -   TypeError: Cannot read property 'err' of undefined
      at results.every.rst (/usr/src/Hitchhiker/api/controllers/project_controller.ts:149:54)
      at Array.every (native)
      at ProjectController.<anonymous> (/usr/src/Hitchhiker/api/controllers/project_controller.ts:149:37)
      at Generator.next (<anonymous>)
      at fulfilled (/usr/src/Hitchhiker/build/controllers/project_controller.js:16:58)
      at process._tickDomainCallback (internal/process/next_tick.js:135:7)
[2018-07-05 00:34:19.592] [ERROR] console - 
[2018-07-05 00:34:22.664] [ERROR] console - TypeError: Cannot read property 'err' of undefined
    at results.every.rst (/usr/src/Hitchhiker/api/controllers/project_controller.ts:149:54)
    at Array.every (native)
    at ProjectController.<anonymous> (/usr/src/Hitchhiker/api/controllers/project_controller.ts:149:37)
    at Generator.next (<anonymous>)
    at fulfilled (/usr/src/Hitchhiker/build/controllers/project_controller.js:16:58)
    at process._tickDomainCallback (internal/process/next_tick.js:135:7)

...

What are my Settings? Manual mapping:

Environment variables:

Note: Replaced Domains with example.com

  • HITCHHIKER_DB_HOST = hitchhiker-mysql
  • HITCHHIKER_APP_HOST = http://example.com:8080/
  • PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  • NPM_CONFIG_LOGLEVEL = info
  • NODE_VERSION = 7.10.1
  • YARN_VERSION = 0.24.4
  • HITCHHIKER_MAIL_CUSTOM = smtp
  • HITCHHIKER_MAIL_SMTP_HOST = mail.example.com
  • HITCHHIKER_MAIL_SMTP_PORT = 465
  • HITCHHIKER_MAIL_SMTP_USER = example@example.com
  • HITCHHIKER_SCHEDULE_MAILFORFAIL = 1
  • HITCHHIKER_SAFE_VM = 1
  • HITCHHIKER_APP_INVITE_DIRECTLY = 0
brookshi commented 6 years ago

I can reproduce this issue, thanks for reporting. I will fix it in next version (v0.14). A workaround for it:

  1. run sudo docker exec -it hitchhiker bash to enter container.
  2. open file build/controllers/project_controller.js
  3. replace line 144 and 145 from
    const success = results.every(rst => !rst.err);
    result = { success: success, message: results.map(rst => rst.err).join(';') };

    to

    const success = results.every(rst => !rst || !rst.err);
    result = { success: success, message: results.map(rst => rst ? rst.err : '').join(';') };