• 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

VPS Starter Arubacloud
0 głosów
1,668 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 (213,530 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 (213,530 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 (213,530 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 (213,530 p.)
Bez sensu te eksporty wewnątrz funkcji. Lepiej eksportować funkcję zwracająca promise.

Zainstaluj sequelize.

Podobne pytania

0 głosów
0 odpowiedzi 438 wizyt
0 głosów
1 odpowiedź 1,771 wizyt
0 głosów
0 odpowiedzi 612 wizyt

92,845 zapytań

141,786 odpowiedzi

320,861 komentarzy

62,178 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...