我还不太了解如何反应,并尝试将应用程序部署到Openshift环境中。该应用程序由一个react-js前端组成,它对nodejs后端restful API进行API调用。至少是这样。
我发现的大多数方法都建议使用Docker,但我不知道从哪里开始。这个
create-react-app
文档提供了一个节点/express服务器的例子来呈现index.html,这是我更熟悉并且已经开始工作的,但是我似乎无法设置代理来将API调用路由到后端。
我最初尝试在package.json中设置代理,但没有成功。然后我发现
express-http-proxy
这看起来很有希望,但不能让它发挥作用。
我的前端服务器如下所示:
const express = require('express');
const path = require('path');
const app = express();
const proxy = require('express-http-proxy');
const PORT = process.env.OPENSHIFT_NODEJS_PORT || 8080;
const API_PROXY_URL = process.env.APIURL
app.use(express.static(path.join(__dirname)));
app.use('/api', proxy(API_PROXY_URL));
app.get('/*', (req, res) => {
res.sendFile(path.join(__dirname, 'index.html'));
});
app.listen(PORT, () => {
console.log(`Server Started on port ${PORT}`);
console.log(`Proxy in use of ${API_PROXY_URL}`);
});
我有一个通用的API函数,它使用AXIOS进行调用:
export function apiCall(method, path, data) {
return new Promise((resolve, reject) => {
return axios[method.toLowerCase()](path, data)
.then(res => {
return resolve(res.data);
})
.catch(err => {
return reject(err.response.data.error);
});
});
}
例如,当我尝试登录时,它正在尝试执行
post
打电话给
<<REACTURL>>/api/auth/signin
当我想把它送到
<<APIURL>>/api/auth/signin
.
我觉得我错过了一些非常明显的东西。