Witam!
Stworzyłem sobie lokalnie aplikację w oparciu o MEAN i wszystko pięknie działało dopóki nie postanowiłem tego przenieść na serwer. Sama aplikacja jest widoczna, ale niestety nie pobiera danych. Używam hostingu mydevil.net i zrobiłem następujące kroki:
1. Stworzyłem bazę mongo, zaimportowałem dane - działa ręczne czytanie danych z kolekcji za pomocą prostych komend typu find itp.
2. Uruchomiłem drugą stronę w innej domenie o typie nodejs, umieściłem tam pliki server.js i api.js. Na początku miałem problem z portem, ale po jego rezerwacji i wpisaniu w konsolę "node server.js" dostaję prawidłową odpowiedź: "server is running".
3. Wrzuciłem wersję produkcyjną z Angulara na stronę www - działa, aplikacja jest widoczna, ale nie ładuje danych (błąd Failed to load resource: the server responded with a status of 404 (Not Found))
Podsumowując, każdy z elementów wygląda ok, jeżeli spojrzymy na niego z osobna, jednak całość nie chce razem współpracować. Może ktoś miał podobne doświadczenie i jest w stanie pomóc mi w tym temacie?
Kody:
api.js
var express = require('express');
var router = express.Router();
var MongoClient = require('mongodb').MongoClient;
var ObjectID = require('mongodb').ObjectID;
const connection = (closure) => {
return MongoClient.connect('mongodb://login:haslo@mongo23.mydevil.net/bazamongo', (err,db) => {
if(err) {
return console.log(err);
}
closure(db);
});
}
let response = {
status: 200,
message: null,
data: []
}
var sendError = (err, res) => {
response.status = 501;
response.message = typeof err == "object" ? err.message : err;
res.status(501).json(response);
}
router.get('/dane',(req,res)=>{
connection((db)=>{
var database = db.db('bazamongo');
database.collection('dane').find().toArray().then((dane)=>{
response.data = dane;
res.json(response);
})
})
})
server.js
var express = require('express');
var bodyParser = require('body-parser');
var path = require('path');
var http = require('http');
var app = express();
var cors = require('cors');
var api = require('./server/api.js');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.static(path.join(__dirname, 'dist')));
app.use('/', api);
app.use(cors());
app.get('*'), (req, res) => {
res.sendFile(path.join(__dirname, 'dist/index.html'));
}
var port = process.env.PORT || '60519';
app.set('port', port);
var server = http.createServer(app);
server.listen(port, () => console.log("Server is running"));
service w Angularze
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class Service {
result;
constructor(private _http: Http) {}
getDane() {
return this._http.get('http://node.domena/dane').map(result => this.result = result.json().data);
}