Javascript 如何使用express router对相对路径进行axios调用?
我正在学习MERN堆栈并创建典型的初学者“Todo”应用程序。当我调用axios时,例如Javascript 如何使用express router对相对路径进行axios调用?,javascript,node.js,express,routes,axios,Javascript,Node.js,Express,Routes,Axios,我正在学习MERN堆栈并创建典型的初学者“Todo”应用程序。当我调用axios时,例如axios.post(“http://localhost:4000/todos/add“,newTodo)它发布的很好,但是当我尝试axios.post(“/todos/add”,newTodo)”时,它没有 呼叫显然只在本地起作用-我如何解决这个问题/我做错了什么 下面是位于/routes/api文件夹中的todos.js文件: const todoRouter=require(“express”).Ro
axios.post(“http://localhost:4000/todos/add“,newTodo)
它发布的很好,但是当我尝试axios.post(“/todos/add”,newTodo)”时,它没有
呼叫显然只在本地起作用-我如何解决这个问题/我做错了什么
下面是位于/routes/api
文件夹中的todos.js
文件:
const todoRouter=require(“express”).Router();
让Todo=require('../../models/Todo');
todoRouter.route(“/”).get(函数(req,res){
查找(函数(err,todos){
如果(错误){
console.log(错误)
}否则{
res.json(todos)
}
});
});
todoRouter.route(“/:id”).get(函数(req,res){
let id=req.params.id
Todo.findById(id,函数(err,Todo){
如果(错误){
console.log(错误)
}否则{
res.json(todo)
}
});
});
todoRouter.route(“/add”).post(功能(req,res){
让todo=新todo(请求正文)
todo.save()
.then(功能(todo){
res.status(200).json({“todo”:“todo添加成功”})
})
.catch(函数(err){
res.status(400).json(“添加新todo失败”)
})
})
todoRouter.route('/update/:id').post(函数(req,res){
Todo.findById(req.params.id,函数(err,Todo){
如果(!todo)
res.status(404).send(“未找到数据”);
其他的
todo.todo_description=req.body.todo_description;
todo.todo_responsible=req.body.todo_responsible;
todo.todo_优先级=req.body.todo_优先级;
todo.todo_completed=req.body.todo_completed;
todo.save()。然后(todo=>{
res.json('Todo updated!');
})
.catch(错误=>{
资源状态(400)。发送(“不可能更新”);
});
});
});
module.exports=todoRouter
您可以将axios的baseUrl
设置为http://localhost:4000
然后相对路径应该可以工作 只需在您的package.json中设置“proxy”:“”属性,您的所有/something请求将被定向到后端,而无需指定基本url感谢您的响应。但是,考虑到部署时的baseURL
更改,没有其他方法可以直接导航相对路径吗?您需要根据环境变量设置baseURL,这样它可以在开发和部署axios.post(“/todos/add”,newTodo)之间变化
执行此post调用时出现的错误是什么?@Sunil[error]加载资源失败:服务器响应状态为404(未找到)(添加,第0行)