node.js - 创建 React App http-proxy-middleware 不工作
问题描述
所以我已经在我的create-react-app
应用程序上使用http-proxy-middleware
. 我确定我已按照信中的说明进行操作,但每次尝试单击相关链接时都会收到 404。
我正在使用create-react-app
v3.2。
这是我的setupProxy.js
文件:
const proxy = require("http-proxy-middleware");
module.exports = function(app) {
app.use(proxy("/api", { target: "http://localhost:3090" }));
};
这是发出http
请求的动作创建者
export const signIn = formProps => async dispatch => {
try {
const response = await axios.post("/api/login", formProps);
//.....etc, etc
} catch(e) {
//.....etc,etc
}
}
这是我的快递服务器上的相关路线:
app.post("/login", requireSignIn, Authentication.login);
当开发服务器启动时,我收到以下消息:
[HPM] Proxy created: /api -> http://localhost:3090
所以setupProxy.js
显然是被 CRA 接受了,但有些地方出了问题。我尝试在代理设置中添加通配符(例如“/api/*”),但没有成功。我在客户端的控制台中登录了以下 404:
POST http://localhost:3000/api/login 404 (Not Found)
其中指的是localhost:3000
,表明localhost:3090
未使用代理(应重定向到 )。
我不禁想到我在这里缺少一些非常简单的东西,但目前我正在努力让它发挥作用。
任何帮助将非常感激。
谢谢!
解决方案
从v1.0.0
开始http-proxy-middleware
,该setupProxy.js
文件需要显式导入;所以代替之前的默认导入
const proxy = require("http-proxy-middleware");
你需要使用:
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app) {
app.use(createProxyMiddleware("/api", { target: "http://localhost:3090" }));
};
推荐阅读
- java - 百里香,春天:坚持创建单个项目视图
- angular - 防止以角度 6 下载 config.ts 文件
- netbeans - 在 Apache Netbeans 9.0 中更改主题
- google-cloud-platform - 使用 terraform 创建 google_sql_user 始终会重新创建资源
- swift - Swift4 - 意外发现 nil - 将图像设置为按钮
- php - PHP / 连接到 Sphinx 需要用户名 / 密码
- c# - 如何为 List 类型实体编写 Razor 代码?
- ios - iOS - 视图(ViewController),具有持久数据
- php - 无法从 PHP 创建视图,但可以从 phpMyAdmin
- c# - 如何使正则表达式正确验证信息?