• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem aplikacji nodejs na hostingu mydevil.net

Object Storage Arubacloud
0 głosów
1,551 wizyt
pytanie zadane 20 marca 2020 w JavaScript przez DanexZ Obywatel (1,270 p.)
edycja 20 marca 2020 przez DanexZ

Mam już kilka aplikacji nodejs. We wszystkich używam tych samych ustawień.

Pierwsza na heroku: http://centre-moneyu.herokuapp.com/ Działa

Ta sama na hostingu mydevilnet: https://centre.moneyu.pl/  NIE DZIAŁA

Druga na heroku: http://moneyu.herokuapp.com/ Działa

Na devilu: https://invest.moneyu.pl/ NIE DZIAŁA

Czy ktoś kto korzysta z devila mógłby looknąć co u mnie jest nie tak? : https://github.com/DanexZ/centre

log: 

App 92522 output: SELECT * FROM users WHERE username='DanexZ'
App 92522 output: (node:92522) UnhandledPromiseRejectionWarning: TypeError: db.query is not a function
App 92522 output:     at Promise (/usr/home/moneyu/domains/centre.moneyu.pl/public_nodejs/app/models/Model.js:230:20)
App 92522 output:     at new Promise (<anonymous>)
App 92522 output:     at User.get (/usr/home/moneyu/domains/centre.moneyu.pl/public_nodejs/app/models/Model.js:164:16)
App 92522 output:     at exports.login (/usr/home/moneyu/domains/centre.moneyu.pl/public_nodejs/app/controllers/UserController.js:17:80)
App 92522 output:     at Layer.handle [as handle_request] (/usr/home/moneyu/domains/centre.moneyu.pl/public_nodejs/node_modules/express/lib/router/layer.js:95:5)
App 92522 output:     at next (/usr/home/moneyu/domains/centre.moneyu.pl/public_nodejs/node_modules/express/lib/router/route.js:137:13)
App 92522 output:     at Route.dispatch (/usr/home/moneyu/domains/centre.moneyu.pl/public_nodejs/node_modules/express/lib/router/route.js:112:3)
App 92522 output:     at Layer.handle [as handle_request] (/usr/home/moneyu/domains/centre.moneyu.pl/public_nodejs/node_modules/express/lib/router/layer.js:95:5)
App 92522 output:     at /usr/home/moneyu/domains/centre.moneyu.pl/public_nodejs/node_modules/express/lib/router/index.js:281:22
App 92522 output:     at Function.process_params (/usr/home/moneyu/domains/centre.moneyu.pl/public_nodejs/node_modules/express/lib/router/index.js:335:12)
App 92522 output: (node:92522) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
App 92522 output: (node:92522) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

1 odpowiedź

0 głosów
odpowiedź 20 marca 2020 przez Ehlert Ekspert (212,670 p.)
Przeczytałeś błąd?
komentarz 20 marca 2020 przez DanexZ Obywatel (1,270 p.)
No tak. db.query is not a function. Nic mi to nie mówi ponieważ na heroku mi nie wywala tego błędu.
komentarz 21 marca 2020 przez Ehlert Ekspert (212,670 p.)
Masz mało czytelny kod, który praktycznie nie jest testowany. Do tego korzystasz ze swoich dziwnych rozwiązań, zamiast zainstalować gotowe paczki.

Sprawdź wersję node na mydevil, sprawdź czy na pewno łączysz się z bazą (daj console loga przed ifem w db.js).
komentarz 21 marca 2020 przez DanexZ Obywatel (1,270 p.)
edycja 21 marca 2020 przez DanexZ

@Ehlert, Jeszcze mi powiedz jak odczytać tego consol.loga na serwerze. 

Klasę Model nazywasz dziwnymi rozwiązaniami? :D Może ja się uczę sql'a :)

Wersja  najnowsza 12.9.1 (na pozostałych też jest ten błąd bo sprawdzałem)

komentarz 21 marca 2020 przez Ehlert Ekspert (212,670 p.)

Jeszcze mi powiedz jak odczytać tego consol.loga na serwerze. 

Skąd mam wiedzieć, to Ty wybrałeś to rozwiązanie do hostowania smiley Jeśli produkcyjnie odpalasz node to wypada skorzystać z pm2.

Klasę Model nazywasz dziwnymi rozwiązaniami? :D Może ja się uczę sql'a :)

Oczywiście, nawet dziwacznymi. Po co zajmować się takimi rzeczami skoro masz Sequelize

https://sequelize.org/

A tak sam piszesz budowanie jakichś zapytań, nie wiadomo po co, wywala Ci się to, nie wiesz gdzie. Totalny chaos. Użyj gotowej paczki, skup się na pisaniu funkcjonalności aplikacji, a nie pisaniu obsługi apka - db oraz pisz testy smiley poczytaj medium.com, jest dużo artykułów z dobrymi praktykami.

komentarz 21 marca 2020 przez DanexZ Obywatel (1,270 p.)
edycja 21 marca 2020 przez DanexZ

No dobra a więc coś z tym passengerem ... muszę rano pokminić

connection.connect( (err) => {

    console.log('connect');

    if (err) throw err;

    module.exports = connection;

    const app = require('./app');
    if (typeof(PhusionPassenger) != 'undefined') {
        console.log('passenger');
    app.listen('passenger');
    } else {

       console.log('no-passenger');
        app.listen(process.env.PORT);
    }

No i użyłem pm2 i to co wyplywa:
0|app    | tutaj
0|app    | connect
0|app    | no-passenger
0|app    | Error: listen EPERM: operation not permitted 0.0.0.0:3000
0|app    |     at Server.setupListenHandle [as _listen2] (net.js:1211:19)
0|app    |     at listenInCluster (net.js:1276:12)
0|app    |     at Server.listen (net.js:1364:7)
0|app    |     at Handshake.<anonymous> (/usr/home/moneyu/domains/centre.moneyu.pl/public_nodejs/db.js:30:13)
0|app    |     at Handshake.<anonymous> (/usr/home/moneyu/domains/centre.moneyu.pl/public_nodejs/node_modules/mysql/lib/Connection.js:525:10)
0|app    |     at Handshake._callback (/usr/home/moneyu/domains/centre.moneyu.pl/public_nodejs/node_modules/mysql/lib/Connection.js:491:16)
0|app    |     at Handshake.Sequence.end (/usr/home/moneyu/domains/centre.moneyu.pl/public_nodejs/node_modules/mysql/lib/protocol/sequences/Sequence.js:83:24)
0|app    |     at Handshake.Sequence.OkPacket (/usr/home/moneyu/domains/centre.moneyu.pl/public_nodejs/node_modules/mysql/lib/protocol/sequences/Sequence.js:92:8)
0|app    |     at Protocol._parsePacket (/usr/home/moneyu/domains/centre.moneyu.pl/public_nodejs/node_modules/mysql/lib/protocol/Protocol.js:291:23)
0|app    |     at Parser._parsePacket (/usr/home/moneyu/domains/centre.moneyu.pl/public_nodejs/node_modules/mysql/lib/protocol/Parser.js:433:10) {
0|app    |   code: 'EPERM',
0|app    |   errno: 'EPERM',
0|app    |   syscall: 'listen',
0|app    |   address: '0.0.0.0',
0|app    |   port: 3000
0|app    | }
 

komentarz 21 marca 2020 przez DanexZ Obywatel (1,270 p.)

@Ehlert,  ... ^^ wystarczyło dodać jeszcze na końcu pliku module.exports = connection i działa :D

komentarz 21 marca 2020 przez Ehlert Ekspert (212,670 p.)
Bez sensu te eksporty wewnątrz funkcji. Lepiej eksportować funkcję zwracająca promise.

Zainstaluj sequelize.

Podobne pytania

0 głosów
0 odpowiedzi 416 wizyt
0 głosów
1 odpowiedź 1,618 wizyt
0 głosów
0 odpowiedzi 574 wizyt

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...