Chr*_*ris 5 node.js express reactjs create-react-app http-proxy-middleware
所以我已经在我的create-react-app应用程序上使用http-proxy-middleware. 我确定我已经按照信中的说明进行操作,但是每次我尝试单击相关链接时都会收到 404。
我正在使用create-react-appv3.2。
这是我的setupProxy.js文件:
const proxy = require("http-proxy-middleware");
module.exports = function(app) {
app.use(proxy("/api", { target: "http://localhost:3090" }));
};
Run Code Online (Sandbox Code Playgroud)
这是发出http请求的动作创建者
export const signIn = formProps => async dispatch => {
try {
const response = await axios.post("/api/login", formProps);
//.....etc, etc
} catch(e) {
//.....etc,etc
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的快递服务器上的相关路线:
app.post("/login", requireSignIn, Authentication.login);
Run Code Online (Sandbox Code Playgroud)
当开发服务器启动时,我收到以下消息:
[HPM] Proxy created: /api -> http://localhost:3090
Run Code Online (Sandbox Code Playgroud)
所以setupProxy.js显然是被 CRA 发现了,但有什么地方不对劲。我试过在代理设置中添加通配符(例如“/api/*”),但没有成功。我在客户端的控制台中登录了以下 404:
POST http://localhost:3000/api/login 404 (Not Found)
Run Code Online (Sandbox Code Playgroud)
which 指的是localhost:3000,表明没有使用代理(应该重定向到localhost:3090)。
我不禁想到我在这里遗漏了一些非常简单的东西,但目前我正在努力让它发挥作用。
任何帮助将非常感激。
谢谢!
vil*_*ole 29
作为v1.0.0的http-proxy-middleware,该setupProxy.js文件需要一个明确的进口; 所以而不是以前的默认导入
const proxy = require("http-proxy-middleware");
Run Code Online (Sandbox Code Playgroud)
您需要使用:
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app) {
app.use(createProxyMiddleware("/api", { target: "http://localhost:3090" }));
};
Run Code Online (Sandbox Code Playgroud)
找到了这个问题的答案 - 正如预期的那样,这是一个简单的错误。
我的express服务器上的路由如下:
app.post("/login", requireSignIn, Authentication.login);
Run Code Online (Sandbox Code Playgroud)
而他们应该是:
app.post("api/login", requireSignIn, Authentication.login);
Run Code Online (Sandbox Code Playgroud)
问题解决了!
| 归档时间: |
|
| 查看次数: |
14453 次 |
| 最近记录: |