因此,我有一個運行Apache的Digital Ocean Ubuntu VPS,節點& Mongo。我可以通過服務器上的CURL從我的數據庫返回數據。節點後端肯定在端口3000上運行。讓我的React前端與我的Express服務器通信
我的React前端使用Fetch,我現在指向localhost:3000。這是錯的嗎?
我也有點困惑,我的前端React包應該在我的服務器上與我的server.js相關。這很重要嗎?
我可以通過我的域訪問前端,它並不像我在本地工作時那樣抓取數據。我必須在我的server.js中缺少一些東西來讓他們彼此交談...
我讀到了Apache VirtualHost以及它如何成爲在單個Apache服務器上運行節點應用程序的必要組件。讓我知道你是否知道這件事。
下面是從前端的httpservice.js文件:
var Fetch = require('whatwg-fetch');
var baseUrl = 'http://localhost:3000';
var service = {
get: function(url) {
return fetch(baseUrl + url)
.then(function(response) {
return response.json();
});
},
post: function(url, ingredient) {
return fetch(baseUrl + url, {
headers: {
'Accept': 'text/plain',
'Content-Type': 'application/json'
},
method: 'post',
body: JSON.stringify(ingredient)
}).then(function(response) {
return response;
});
}
};
module.exports = service;
下面是從後端我server.js:
var express = require('express');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var bodyParser = require('body-parser');
var app = express();
mongoose.connect('mongodb://admin:[email protected]:27017/food?authSource=admin');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
var usersSchema = new Schema({
// _id: String,
id: String,
vote: Number
});
var bkyes = mongoose.model('bkyes', usersSchema);
app.get('/bkyes', function(req, res) {
bkyes.find({}, function(err, bkyes) {
res.send(bkyes);
});
});
app.listen(3000);
非常感謝任何見解,都是歡迎和讚賞!
客戶如何index.html文件調用所有必需的JavaScript文件/它需要的庫?關於你在這裏的問題並不完全清楚。 – zipzit
這是一個React前端,因此httpservice.js文件只定義了在應用程序的其他不相關部分中使用的GET和POST函數。 index.html只是一個普通的index.html,它調用了React bundle.js。 – jdev99
我假設你只在本地主機上運行這個程序(包括客戶端和服務器)。當你用chrome檢查代碼時,你會發現控制檯中有任何錯誤?所有元素是否在網絡選項卡上正確加載?你的問題到底是什麼? – zipzit